当前位置: 首页>>技术教程>>正文


如何在启动时运行docker-compose?

, , ,

问题描述

这是在运行 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 相比,有一个优势,即使它启动得晚一点,你也不必太担心网络等依赖关系。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13747.html,未经允许,请勿转载。