İlk olarak, bir orada sorun Gözlerinde farklı Dockerfile
:
RUN service mysql restart && /tmp/setup.sh
Docker görüntüleri çalışan işlemleri kaydetmez. Bu nedenle, RUN
komutunuz yalnızca docker build
aşama sırasında yürütülür ve derleme tamamlandıktan sonra durur. Bunun yerine, konteyner aşağıdaki gibi CMD
veya ENTRYPOINT
komutlarını kullanarak başlatıldığında komutu belirtmeniz gerekir :
CMD mysql start
İkincisi, docker konteynerinin çalışmaya devam etmesi için bir işleme (son komut) ihtiyacı vardır, aksi takdirde konteyner çıkar / durur. Bu nedenle, normal service mysql start
komut doğrudan Dockerfile içinde kullanılamaz.
Çözüm
Süreci çalıştırmanın üç tipik yolu vardır:
Bu genellikle, çıkarılan günlüğü liman işçisine erişilebilir kıldığı için çalışan tek bir hizmetiniz olduğunda tercih edilir.
Bu yalnızca benzer bir komut dosyası varsa çalışır mysqld_safe
.
Komutun bir dizi adım gerçekleştirmesi gerekiyorsa, bu en iyisidir, /start.sh
çalışmaya devam .
Not
Yeni başlayanlar için supervisord
önerilmez. Dürüst olmak gerekirse, aşırı dolu. Konteyner için tek hizmet / tek komut kullanmak çok daha iyidir.
BTW: referans için mevcut mysql docker görüntüleri için lütfen https://registry.hub.docker.com adresini kontrol edin