Docker部署MongoDb的詳細(xì)過程記錄
1. 編寫docker-compose.conf 文件
version: '3'
services:
mongo:
image: mongo:latest # 指定 MongoDB 版本,確保 >= 3.6
container_name: mongo-replica
restart: always
command: ["mongod", "--replSet", "rs0", "--oplogSize", "128", "--bind_ip_all"]
ports:
- 27017:27017
volumes:
- ./mongo_data:/data/db
environment:
#初始化MongoDb管理員用戶名
MONGO_INITDB_ROOT_USERNAME: root
#初始化MongoDb的管理員密碼
MONGO_INITDB_ROOT_PASSWORD: example2. 啟動(dòng)
在包含 docker-compose.yml 文件的目錄中運(yùn)行以下命令啟動(dòng) MongoDB:
docker-compose up -d
這將創(chuàng)建一個(gè) MongoDB 副本集實(shí)例。--replSet 選項(xiàng)用于指定副本集名稱為 rs0,--bind_ip_all 確保 MongoDB 綁定到所有 IP 地址。
本地27017端口映射到容器內(nèi)部27017端口,把容器內(nèi)部的/data/db目錄掛載當(dāng)前目錄下的mongo_db目錄,并且初始化了mongo的管理員用戶和密碼
3. 驗(yàn)證啟動(dòng)是否成功
命令行驗(yàn)證
docker ps

4. 初始化副本集
1.首次啟動(dòng)容器后,需要初始化 MongoDB 副本集。連接到 MongoDB 并運(yùn)行以下命令:
docker exec -it mongo-replica mongo
2.然后在 MongoDB shell 中運(yùn)行以下命令:
rs.initiate()
這樣就初始化一個(gè)名為 rs0 的副本集。
3.驗(yàn)證配置
在 MongoDB shell 中,可以使用以下命令驗(yàn)證副本集的狀態(tài):
rs.status()
rs0:PRIMARY> rs.status()
{
"set" : "rs0",
"date" : ISODate("2024-10-24T09:31:21.318Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"majorityVoteCount" : 1,
"writeMajorityCount" : 1,
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1729762278, 1),
"t" : NumberLong(1)
},
"lastCommittedWallTime" : ISODate("2024-10-24T09:31:18.528Z"),
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1729762278, 1),
"t" : NumberLong(1)
},
"readConcernMajorityWallTime" : ISODate("2024-10-24T09:31:18.528Z"),
"appliedOpTime" : {
"ts" : Timestamp(1729762278, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1729762278, 1),
"t" : NumberLong(1)
},
"lastAppliedWallTime" : ISODate("2024-10-24T09:31:18.528Z"),
"lastDurableWallTime" : ISODate("2024-10-24T09:31:18.528Z")
},
"lastStableRecoveryTimestamp" : Timestamp(1729762278, 1),
"lastStableCheckpointTimestamp" : Timestamp(1729762278, 1),
"electionCandidateMetrics" : {
"lastElectionReason" : "electionTimeout",
"lastElectionDate" : ISODate("2024-10-24T07:16:15.041Z"),
"electionTerm" : NumberLong(1),
"lastCommittedOpTimeAtElection" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"lastSeenOpTimeAtElection" : {
"ts" : Timestamp(1729754175, 1),
"t" : NumberLong(-1)
},
"numVotesNeeded" : 1,
"priorityAtElection" : 1,
"electionTimeoutMillis" : NumberLong(10000),
"newTermStartDate" : ISODate("2024-10-24T07:16:15.048Z"),
"wMajorityWriteAvailabilityDate" : ISODate("2024-10-24T07:16:15.053Z")
},
"members" : [
{
"_id" : 0,
"name" : "5ffc77d51cd0:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 8176,
"optime" : {
"ts" : Timestamp(1729762278, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2024-10-24T09:31:18Z"),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "",
"electionTime" : Timestamp(1729754175, 2),
"electionDate" : ISODate("2024-10-24T07:16:15Z"),
"configVersion" : 1,
"self" : true,
"lastHeartbeatMessage" : ""
}
],
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1729762278, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1729762278, 1)
}5. 登陸MongoDb
可以通過mongo客戶端或者Docker命令登陸,這里選擇使用MongoDb自帶的圖形化工具進(jìn)行登錄
1.輸入host,勾選Direct Connecton

2.點(diǎn)到Authentication,輸入用戶名密碼和認(rèn)證數(shù)據(jù)庫

3.保存&登錄

6. 創(chuàng)建角色和用戶
1.點(diǎn)擊Open MongoDB shell進(jìn)入mongo shell


2.創(chuàng)建角色 用戶分配權(quán)限
use admin;
db.createRole(
{
role: "flinkrole",
privileges: [{
// 所有數(shù)據(jù)庫中所有非系統(tǒng)集合的 grant 權(quán)限
resource: { db: "", collection: "" },
actions: [
"splitVector",
"listDatabases",
"listCollections",
"collStats",
"find",
"changeStream" ]
}],
roles: [
// 閱讀 config.collections 和 config.chunks
// 用于分片集群快照拆分。
{ role: 'read', db: 'config' }
]
}
);
db.createUser(
{
user: 'flinkuser',
pwd: 'flinkpw',
roles: [
{ role: 'flinkrole', db: 'admin' }
]
}
);就可以使用新創(chuàng)建的用戶進(jìn)行登錄MongoDb了
總結(jié)
到此這篇關(guān)于Docker部署MongoDb的文章就介紹到這了,更多相關(guān)Docker部署MongoDb內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一次dockerfile的循環(huán)依賴錯(cuò)誤實(shí)戰(zhàn)記錄
Dockerfile 是一個(gè)文本文件,其內(nèi)包含了一條條的指令,每一條指令構(gòu)建一層,因此每一條指令的內(nèi)容,就是描述該層應(yīng)當(dāng)如何構(gòu)建,這篇文章主要介紹了使用Docker多階段構(gòu)建時(shí)遇到的循環(huán)依賴問題及其解決方法,,需要的朋友可以參考下2025-02-02
docker學(xué)習(xí)筆記之把容器commit成鏡像的方法
本篇文章主要介紹了docker學(xué)習(xí)筆記之把容器commit成鏡像,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
Windows11安裝Docker Desktop教程的圖文教程
本文主要介紹一下Windows11安裝Docker Desktop教程的圖文教程,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10
清理docker磁盤空間的方法總結(jié)(附詳細(xì)講解)
docker?鏡像特別容易占空間,稍微不注意可能磁盤爆滿,所以本文給大家詳細(xì)介紹了如何清理?docker?磁盤空間,并通過代碼示例給大家講解的非常詳細(xì),需要的朋友可以參考下2024-02-02
Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解
這篇文章主要介紹了Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解的相關(guān)資料,需要的朋友可以參考下2022-10-10
Jenkins整合Docker實(shí)現(xiàn)CICD自動(dòng)化部署的詳細(xì)過程(若依項(xiàng)目)
本文介紹了如何使用Jenkins和Docker實(shí)現(xiàn)CI/CD自動(dòng)化部署,文章介紹了環(huán)境準(zhǔn)備,包括Jenkins、Docker、JDK、Node和Maven,然后討論了如何配置GitLab環(huán)境并利用Webhooks實(shí)現(xiàn)代碼的自動(dòng)拉取和部署,最后,展示了如何部署前后端分離的項(xiàng)目,并通過實(shí)際操作驗(yàn)證了整個(gè)流程的有效性2024-10-10
使用Docker部署Nacos并配置MySQL數(shù)據(jù)源的詳細(xì)步驟
Nacos是阿里巴巴開源的服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺,它提供了注冊中心和配置中心的功能,能夠輕松地管理微服務(wù)的注冊與發(fā)現(xiàn),以及動(dòng)態(tài)配置的管理,這篇文章主要給大家介紹了關(guān)于使用Docker部署Nacos并配置MySQL數(shù)據(jù)源的超詳細(xì)步驟,需要的朋友可以參考下2024-05-05
使用Docker創(chuàng)建FTP服務(wù)器的過程解析
這篇文章主要介紹了使用Docker創(chuàng)建FTP服務(wù)器的過程解析,使用?Docker?搭建?FTP?服務(wù),不僅十分簡單,而且可以對宿主機(jī)有一定的隔離,對Docker創(chuàng)建FTP服務(wù)器的過程感興趣的朋友一起看看吧2022-04-04

