use*_*544 79 docker docker-compose
为了让容器在启动时自动启动,我尝试添加命令:
cd directory_has_docker-compose.yml && docker-compose up -d 在/etc/rc.local中.
但是当我重新启动机器后,容器无法正常工作.
如何docker-compose up -d在系统启动时运行?
Ole*_*sky 98
当我们使用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
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要在没有-d标志的情况下运行:
# /etc/systemd/system/docker-compose-app.service
[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
[Service]
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitIntervalSec=60
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
WorkingDirectory使用docker化项目路径更改参数.并使服务自动启动:
systemctl enable docker-compose-app
Run Code Online (Sandbox Code Playgroud)
Max*_*sse 62
你应该能够添加:
restart: always
Run Code Online (Sandbox Code Playgroud)
要在docker-compose.yml文件中重新启动的每个服务
mas*_*ost 32
如果您docker.service在系统启动时启用
$ sudo systemctl enable docker
Run Code Online (Sandbox Code Playgroud)
和你在你的服务docker-compose.yml有
restart: always
Run Code Online (Sandbox Code Playgroud)
如果仅在命令下运行一次,则在重新引导系统时会运行所有服务
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
use*_*544 31
我试过restart: always,它适用于某些容器(如php-fpm),但是我遇到了一些容器(如nginx)在重启后仍未重启的问题.
解决了这个问题.
crontab -e
@reboot (sleep 30s ; cd directory_has_dockercomposeyml ; /usr/local/bin/docker-compose up -d )&
Run Code Online (Sandbox Code Playgroud)
Vas*_*007 16
使用重启:始终在您的docker compose文件中。
Docker-compose up -d将再次从图像启动容器。使用docker-compose start启动停止容器,它永远不会启动从图像中新的容器。
nginx:
restart: always
image: nginx
ports:
- "80:80"
- "443:443" links:
- other_container:other_container
Run Code Online (Sandbox Code Playgroud)
您也可以将代码写在docker文件中,以便在具有其他容器依赖性的情况下首先创建代码。
Ger*_*niz 14
restart: unless-stopped
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
作为对user39544的回答的补充,还有一种语法crontab -e:
@reboot sleep 60 && /usr/local/bin/docker-compose -f /path_to_your_project/docker-compose.yml up -d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55450 次 |
| 最近记录: |