簡體   English   中英

Docker Compose中的MongoDb-提供配置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM