Docker的新手,我读到Dockerfile只能有1个CMD。
那么如何启动我的数据库服务器和应用程序服务器?类似的东西:
CMD /root/database/bin/server run &
CMD /root/appserver/bin/server run &
答案 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