Khi chúng tôi sử dụng crontabhoặc /etc/rc.localtệp không dùng nữa , chúng tôi cần một khoảng thời gian trễ (ví dụ: sleep 10tùy thuộc vào máy) để đảm bảo rằng các dịch vụ hệ thống có sẵn. Thông thường, systemd(hoặc upstart) được sử dụng để quản lý dịch vụ nào bắt đầu khi hệ thống khởi động. Bạn có thể thử sử dụng cấu hình tương tự cho việc này:
# /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
Hoặc, nếu bạn muốn chạy mà không có -dcờ:
# /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
Thay đổi WorkingDirectorythông số với đường dẫn dự án dày đặc của bạn. Và cho phép dịch vụ bắt đầu tự động:
systemctl enable docker-compose-app
--restart alwayshoặc--restart unless-stoppedtrong việc sử dụng docker -omp.ymlrestart: always-> Tham khảo . Nhưng có thể không hoạt động trên một số vùng chứa!