Untuk membiarkan kontainer mulai otomatis pada titik startup, saya mencoba menambahkan perintah:
cd directory_has_docker-compose.yml && docker-compose up -d
di /etc/rc.local.
tetapi kemudian setelah saya mem-boot ulang mesin, kontainer tidak berfungsi.
Bagaimana dijalankan docker-compose up -d
saat sistem dimulai?
docker
docker-compose
pengguna39544
sumber
sumber
--restart always
atau--restart unless-stopped
atau dalam penggunaan docker-compose.ymlrestart: always
-> Ref . Tapi mungkin tidak bekerja pada beberapa wadah!Jawaban:
Saat kami menggunakan
crontab
atau/etc/rc.local
file yang tidak digunakan lagi , kami memerlukan penundaan (misalnyasleep 10
, bergantung pada mesin) untuk memastikan bahwa layanan sistem tersedia. Biasanya,systemd
(atauupstart
) digunakan untuk mengelola layanan mana yang dimulai saat sistem melakukan booting. Anda dapat mencoba menggunakan konfigurasi serupa untuk ini:Atau, jika Anda ingin berjalan tanpa
-d
bendera:Ubah
WorkingDirectory
parameter dengan jalur proyek docker Anda. Dan aktifkan layanan untuk dimulai secara otomatis:sumber
systemctl start docker-compose-app
dansystemctl status docker-compose-app
saya pikir apa yang Anda cari.systemctl start docker-compose-app
ditemui ini:Job for docker-compose-app.service failed because the control process exited with error code. See "systemctl status docker-compose-app.service" and "journalctl -xe" for details
service docker-compose-app start
service docker-compose-app status
service docker-compose-app stop
Anda harus bisa menambahkan:
ke setiap layanan yang ingin Anda restart di file docker-compose.yml
sumber
restart: always
memiliki beberapa bug serius: mount host tidak akan dipasang saat reboot misalnya. Menurut saya, lebih baik menemukan kembali roda, jika roda yang ada berbentuk persegi.Jika Anda
docker.service
diaktifkan pada startup sistemdan layanan Anda di
docker-compose.yml
miliki Andasemua layanan berjalan ketika Anda me-reboot sistem Anda jika Anda menjalankan perintah di bawah ini hanya sekali
sumber
Saya mencoba
restart: always
, ini berfungsi di beberapa wadah (seperti php-fpm), tetapi saya menghadapi masalah bahwa beberapa wadah (seperti nginx) masih tidak memulai ulang setelah reboot.Memecahkan masalah.
sumber
Gunakan restart: selalu di file tulis buruh pelabuhan Anda.
Docker-compose up -d
akan meluncurkan kontainer dari gambar lagi. Gunakandocker-compose start
untuk memulai penampung yang dihentikan, ia tidak pernah meluncurkan penampung baru dari gambar.Anda juga dapat menulis kode di file buruh pelabuhan sehingga dibuat pertama kali, jika memiliki ketergantungan penampung lain.
sumber
always
, tapi mungkinunless-stopped
. Pilihan lainnya adalahon-failure
danno
. Ini dikenal sebagai kebijakan mulai ulang .Sebagai tambahan
user39544
jawaban, satu lagi jenis sintaks untukcrontab -e
:sumber
crontab -e
sebagai pengguna pi, dengan pi anggota dari buruh pelabuhan kelompok ...