Docker部署MongoDb的詳細(xì)過(guò)程記錄
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: example
2. 啟動(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
可以通過(guò)mongo客戶端或者Docker命令登陸,這里選擇使用MongoDb自帶的圖形化工具進(jìn)行登錄
1.輸入host,勾選Direct Connecton
2.點(diǎn)到Authentication,輸入用戶名密碼和認(rèn)證數(shù)據(jù)庫(kù)
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ù)庫(kù)中所有非系統(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)容請(qǐng)搜索腳本之家以前的文章或繼續(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)依賴問(wèn)題及其解決方法,,需要的朋友可以參考下2025-02-02docker學(xué)習(xí)筆記之把容器commit成鏡像的方法
本篇文章主要介紹了docker學(xué)習(xí)筆記之把容器commit成鏡像,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Windows11安裝Docker Desktop教程的圖文教程
本文主要介紹一下Windows11安裝Docker Desktop教程的圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10清理docker磁盤空間的方法總結(jié)(附詳細(xì)講解)
docker?鏡像特別容易占空間,稍微不注意可能磁盤爆滿,所以本文給大家詳細(xì)介紹了如何清理?docker?磁盤空間,并通過(guò)代碼示例給大家講解的非常詳細(xì),需要的朋友可以參考下2024-02-02Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解
這篇文章主要介紹了Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解的相關(guān)資料,需要的朋友可以參考下2022-10-10Jenkins整合Docker實(shí)現(xiàn)CICD自動(dòng)化部署的詳細(xì)過(guò)程(若依項(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)目,并通過(guò)實(shí)際操作驗(yàn)證了整個(gè)流程的有效性2024-10-10使用Docker部署Nacos并配置MySQL數(shù)據(jù)源的詳細(xì)步驟
Nacos是阿里巴巴開(kāi)源的服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái),它提供了注冊(cè)中心和配置中心的功能,能夠輕松地管理微服務(wù)的注冊(cè)與發(fā)現(xiàn),以及動(dòng)態(tài)配置的管理,這篇文章主要給大家介紹了關(guān)于使用Docker部署Nacos并配置MySQL數(shù)據(jù)源的超詳細(xì)步驟,需要的朋友可以參考下2024-05-05使用Docker創(chuàng)建FTP服務(wù)器的過(guò)程解析
這篇文章主要介紹了使用Docker創(chuàng)建FTP服務(wù)器的過(guò)程解析,使用?Docker?搭建?FTP?服務(wù),不僅十分簡(jiǎn)單,而且可以對(duì)宿主機(jī)有一定的隔離,對(duì)Docker創(chuàng)建FTP服務(wù)器的過(guò)程感興趣的朋友一起看看吧2022-04-04