เมื่อเราใช้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
[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
เปลี่ยนWorkingDirectory
พารามิเตอร์ด้วยพา ธ โปรเจ็กต์ dockerized ของคุณ และเปิดใช้งานบริการเพื่อเริ่มโดยอัตโนมัติ:
systemctl enable docker-compose-app
--restart always
หรือ--restart unless-stopped
หรือใน docker-compose.yml userestart: always
-> Ref . แต่อาจจะใช้ไม่ได้กับบางคอนเทนเนอร์!