Bu, sorunuza doğrudan bir cevap değildir, ancak aslında daha önemli olabilir ve buradaki diğer cevapları okurken bu farkına vardım.
Bazı karmaşık sistemleri Docker'a geçirme konusunda bazı deneyimlerim oldu ve yaşadığım en önemli gerçeklerden biri, her uygulama / hizmet veya bir "Daemon" için bir Docker konteynerine sahip olmanız gerektiğidir.
Bunun çok önemli bir nedeni Docker'ın systemctl ile başlattığınız hizmetleri net bir şekilde kapatmaması ve aslında beklenmedik bir elektrik kesintisinden kaynaklanan aynı türde veritabanı bozulmalarına neden olabilir.
Buna biraz daha derine dalmak için: Docker bir konteynere bir "dur" komutu verdiğinde, SIGTERM sinyalini yalnızca tüm servislere ve servislere değil, CMD / ENTRYPOINT ile başlatılan tek bir işlem gönderir. Böylece, bir hizmetin temiz bir şekilde kapanması uyarısı var ve diğerleri de kararsızca sonlandırılıyor.
İki servisi kesinlikle aynı kapta paketlemeniz gerekiyorsa (örneğin, uygulamanız ve bir PostgreSQL veritabanınız ya da bunun gibi bir şey), CMD / ENTRYPOINT'inizin SIGTERM'i yakalayan bir komut dosyası olması ve ardından bilinen hizmetlere yeniden yayınlaması gerekir. Yapılabilir, ancak fırsatınız varsa, çözümünüzü yeniden düşünün ve birden çok kaplara ayırmaya çalışın.
Zeyilname
Docker sitesinde , aynı kapta çalışan birden çok hizmetiniz olması durumunda süpervizörü kullanma hakkında ilginç bir not / sayfa var.
sudo
mı?