Docker在容器中启动2个进程

时间:2014-07-12 14:14:28

标签: docker

Docker的新手,我读到Dockerfile只能有1个CMD。

那么如何启动我的数据库服务器和应用程序服务器?类似的东西:

CMD /root/database/bin/server run &
CMD /root/appserver/bin/server run &

2 个答案:

答案 0 :(得分:4)

Docker只能在容器中启动一个进程 - 但该进程可以随意启动。

Supervisord一直是一个受欢迎的选择,然后继续为您想要/需要的任何其他内容加注星标。

答案 1 :(得分:1)

Docker可以根据需要运行任意数量的进程。在同一容器中运行数据库和应用程序服务器没有问题。但是,您只能在容器中运行一个命令,因此该命令必须启动所有其他进程,并且只要容器运行它就必须运行(如果它停止,容器将停止)。

所以启动一个shell脚本,它本身将启动所有其他的东西:

CMD /run.sh

shell脚本可能如下所示:

echo "Lets start up"

:: Run your database server in background
/root/database/bin/server run &

:: Run your app server (not in background to keep the container up)
/root/appserver/bin/server run