Ini ada pada Ubuntu 14.04 LTS VM yang menjalankan Docker dan saya curiga respawn
penyebab masalah saya tapi tidak yakin dengan solusi yang ideal.
Skrip pemula baru saat ini ( cat /etc/init/dockersuitecrm.conf
)
description "Start docker containers"
author "Batman"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
end script
Ini 'bekerja' dalam keadaan myapp
hidup dan responsif tetapi /sbin/init
memakan semua CPU ketika saya monitor dengan htop
. Jika saya menghapus entri dari pemula ( sudo rm /etc/init/dockersuitecrm.conf
) dan secara manual SSH masuk dan menjalankan docker-compose -f /usr/bin/myapp/docker-compose.yml -p myapp start
saya tidak melihat cpu pada masalah 100% dan seperti sebelumnya myapp
lagi hidup dan responsif.
Jadi saya curiga cara saya memulai docker-compose di atas salah. Apa cara yang benar untuk memulai docker-compose
selalu berjalan tanpa intervensi manual?
EDIT: Seharusnya tidak masalah tetapi /usr/bin/myapp -> /home/batman/dockerapps/myapp
sebagai tautan simbolis.
respawn
perintah dalam skrip.docker-compose start
.script
blok. Mungkin itu bagian dari masalahnya? Saya memilikichdir /usr/bin/myapp/
dan pada baris berikutnyaexec docker-compose up
sebagai gantinya.docker-compose up -d
Jawaban:
Cukup gunakan crontab, alih-alih menggunakan intervall waktu cukup ucapkan @reboot
Jadi login sebagai pengguna yang harus memulai skrip ini dan ketik perintah
lalu masuk
Nyalakan ulang sistem dan lihat apakah itu berfungsi. Ada satu keuntungan dari pemula, meskipun dimulai sedikit kemudian, Anda tidak perlu terlalu khawatir tentang ketergantungan seperti jaringan, dll.
sumber
Dengan anggapan Anda menggunakan definisi Docker Compose definisi 2 di dalam diri Anda
docker-compose.yml
, Anda dapat melakukan hal berikut:Mendefinisikan
restart: always
seperti itu:Referensi: https://docs.docker.com/compose/compose-file/compose-file-v2/
sumber
Docker tidak siap segera Jika Anda menjalankan skrip terlalu dini, tidak ada yang akan terjadi. Docker akan mulai merespons perintah docker ps segera setelah siap sehingga Anda dapat menggunakan trik ini di crontab:
nano / etc / crontab / root
@reboot / usr / bin / buruh pelabuhan ps && / usr / bin / buruh-menulis -f /prod.yml mulai
sumber