尝试过关注此问题的各种指南,文章和SE答案,但在尝试将其部署到我们的测试服务器(CentOS vm运行的docker,compose等)时似乎碰到了一堵砖墙。
我可以启动mongo,但似乎只进入localhost模式而没有身份验证(即使提供了参数),并且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)和/或运行脚本来设置默认用户和db。
谢谢!
答案 0 :(得分:0)
您忘记了Dockerfile中的前导/
。这是正确的行:
ENTRYPOINT /usr/bin/mongod