在Docker中运行Mongodb Ops Manager

时间:2018-07-20 03:00:54

标签: mongodb docker

我有一个可以在容器中正确安装Mongodb和Ops Manager的dockerfile。之后,我使用entrypoint.sh进行设置,在脚本的末尾放上了

echo "starting mongodb"
service mongod start
echo "starting opsmgr"
service mongodb-mms start

运行容器时,从日志消息中,永远不会执行启动ops manager行的行。

我该怎么做:如果mongodb启动,则执行service mongodb-mms start

由于操作管理器需要等待mongodb首先正确启动,因此不确定它是否在一个容器中运行多个服务。

1 个答案:

答案 0 :(得分:0)

我发现这个Dockerfile是用于非常旧的Ops Manager版本,但是它等待mongodb端口打开的方式仍然有效:https://github.com/deviantony/docker-opsmanager/blob/master/ops-manager/startup.sh

基本上,作者使用nc等到标准mongod端口接受与以下设备的连接:

echo "Waiting for MongoDB"
while true; do
    nc -q 1 database 27017 >/dev/null && break
done

现在,请确保在调用Ops Manager时将其保留在前台,因为Docker需要运行一个进程。

您可以以service start mongodb-mms开头,然后直接运行tail,例如:

echo "starting mongodb"
service mongod start

# snippet to wait for mongod to be in running state 

echo "starting opsmgr"
service mongodb-mms start

# Keep this startup script busy, if it ends, the Docker container dies.
tail -f /opt/mongodb/mms/logs/mms0.log