[英]MongoDb in Docker Compose - providing a configuration
已經嘗試遵循各種指南,文章和SE答案,但是在嘗試將其部署到我們的測試服務器(運行docker,compose等的CentOS vm)時似乎遇到了麻煩。
我可以啟動mongo,但是它似乎進入了僅本地主機模式,並且沒有身份驗證(即使提供了參數),並且setup .js腳本似乎也沒有運行。
我想嘗試使其完全正常工作,因此我們的持續集成管道非常好用。 問題似乎在於,有關此文檔的文檔已經過時,分散且難以組合成一個完整的文檔。
我嘗試過的
創建了具有某些用戶設置的JS文件(MongoSetup.js)
use admin
db.createUser({ "user" : "superUserAdmin",
"pwd" : "1234",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
} ]
})
db.createUser({ "user" : "writeUser",
"pwd" : "1234",
"roles" : [
{
"role" : "readWrite",
"db" : "FOO"
} ]
})
use FOO
db.createCollection("logs")
該文件中的命令已經針對Mongo CLI進行了測試,似乎可以正常工作。
創建了一個Dockerfile來嘗試復制此文件作為構建的一部分:
FROM mongo
COPY MongoSetup.js /docker-entrypoint-initdb.d
ENTRYPOINT usr/bin/mongod
這一點我不太確定,但是似乎.js文件已復制到主機上的該目錄。
最后,Docker-Compose文件:(這是一個提取,但是該文件有效)
mongo-logger:
image: FOOmongo #(the image we created and pushed to our registry using the dockerfile above)
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=1234
- MONGO_INITDB_DATABASE=admin
command: bash -c 'mongo < /docker-entrypoint-initdb.d/MongoSetup.js'
network_mode: "bridge"
volumes:
- mongologger:/data/db
logging:
driver: syslog
options:
syslog-address: "udp://127.0.0.1:514"
ports:
- 27017:27017
目前似乎mongo容器啟動了……然后在幾秒鍾后死亡,日志中出現連接問題。
我嘗試過的其他東西
嘗試在撰寫文件中啟用Mongo身份驗證:
command: mongod -auth --bind_ip all
command: mongod --auth --bind_ip all
也使用正確的IP地址而不是全部。
嘗試從Dockerfile中使用Bash命令:
CMD ["bash","/docker-entrypoint-initdb.d/MongoSetup.js"]
我嘗試了以不同組合添加和刪除這些行的各種方法,但效果不佳。 我敢肯定那里有一些菜鳥錯誤,但這是一個非常令人困惑的雞尾酒-mongo,linux,dockerfile,docker-compose和docker命令。
任何人都可以提出以下建議:
1)如何設置mongo在可遠程訪問的模式下啟動。
2)和/或運行腳本來設置默認用戶和數據庫。
謝謝!
您忘記了Dockerfile中的前導/
。 這是正確的行:
ENTRYPOINT /usr/bin/mongod
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.