如何在系统启动时运行 docker-compose up -d?

新手上路,请多包涵

为了让容器在启动点自动启动,我尝试添加命令:

cd directory_has_docker-compose.yml && docker-compose up -d 在 /etc/rc.local 中。

但是在我重新启动机器后,容器无法工作。

系统启动时如何运行 docker-compose up -d

原文由 user39544 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 338
1 个回答

当我们使用 crontab 或已弃用的 /etc/rc.local 文件时,我们需要延迟(例如 sleep 10 ,具体取决于机器)以确保系统服务可用。通常, systemd (或 upstart )用于管理系统启动时启动哪些服务。您可以尝试为此使用类似的配置:

 # /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

或者,如果您想在没有 -d 标志的情况下运行:

 # /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
StartLimitIntervalSec=60

[Service]
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

使用您的 dockerized 项目路径更改 WorkingDirectory 参数。并使服务自动启动:

 systemctl enable docker-compose-app

原文由 Oleg Belostotsky 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题