Khi chúng tôi sử dụng crontab
hoặc /etc/rc.local
tệp không dùng nữa , chúng tôi cần một khoảng thời gian trễ (ví dụ: sleep 10
tù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ó -d
cờ:
# /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 WorkingDirectory
thô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 always
hoặc--restart unless-stopped
trong 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!