问题描述
这是在运行 Docker 的 Ubuntu 14.04 LTS VM 上,我怀疑 respawn
是导致我的问题的原因,但不确定理想的解决方案。
当前新贵脚本(cat /etc/init/dockersuitecrm.conf
)
description "Start docker containers"
author "Batman"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
end script
这个 ‘works’ 中的 myapp
处于活动状态并且响应良好,但是当我使用 htop
进行监视时, /sbin/init
占用了所有 CPU。如果我从 upstart ( sudo rm /etc/init/dockersuitecrm.conf
) 中删除条目并手动 SSH 并运行 docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
我不会看到 cpu 处于 100% 的问题,并且像以前一样 myapp
再次处于活动状态并响应。
所以我怀疑我上面启动 docker-compose 的方式是不正确的。启动 docker-compose
始终运行而无需手动干预的正确方法是什么?
编辑:应该不重要,但 /usr/bin/myapp -> /home/batman/dockerapps/myapp
作为符号链接。
最佳答案
只需使用 crontab,而不是使用时间间隔,只需说 @reboot
因此,以应启动此脚本的用户身份登录并键入命令
crontab -e
然后输入
@reboot /better/enter/fullpath/here/docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
重新启动系统并查看是否有效。与 upstart 相比,有一个优势,即使它启动得晚一点,你也不必太担心网络等依赖关系。