Saat kami menggunakan crontab
atau /etc/rc.local
file yang tidak digunakan lagi , kami memerlukan penundaan (misalnya sleep 10
, bergantung pada mesin) untuk memastikan bahwa layanan sistem tersedia. Biasanya, systemd
(atau upstart
) digunakan untuk mengelola layanan mana yang dimulai saat sistem melakukan booting. Anda dapat mencoba menggunakan konfigurasi serupa untuk ini:
# /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
Atau, jika Anda ingin berjalan tanpa -d
bendera:
# /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
Ubah WorkingDirectory
parameter dengan jalur proyek docker Anda. Dan aktifkan layanan untuk dimulai secara otomatis:
systemctl enable docker-compose-app
--restart always
atau--restart unless-stopped
atau dalam penggunaan docker-compose.ymlrestart: always
-> Ref . Tapi mungkin tidak bekerja pada beberapa wadah!