Saat kami menggunakan crontabatau /etc/rc.localfile 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 -dbendera:
# /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 WorkingDirectoryparameter dengan jalur proyek docker Anda. Dan aktifkan layanan untuk dimulai secara otomatis:
systemctl enable docker-compose-app
--restart alwaysatau--restart unless-stoppedatau dalam penggunaan docker-compose.ymlrestart: always-> Ref . Tapi mungkin tidak bekerja pada beberapa wadah!