Yapmaya çalıştığım aynı şeyi yapan bir sürü öğretici gördüm, ancak bazı nedenlerden dolayı Docker kaplarımdan çıkıyor. Temel olarak, bir web sunucusu ve bir Docker kapsayıcısının içinde birkaç arka plan oluşturuyorum. Bunun son bölümlerini run-all.sh
Dockerfile'imde CMD ile çalıştırdığım bir bash betiği ile yapıyorum. run-all.sh
buna benzer:
service supervisor start
service nginx start
Ve Dockerfile'ımın içine şu şekilde başlıyorum:
CMD ["sh", "/root/credentialize_and_run.sh"]
Bir şeyleri manuel olarak çalıştırdığımda (yani -i -t / bin / bash ile görüntüye devam ederken) hizmetlerin hepsinin doğru şekilde başladığını görebiliyorum ve görüntüyü çalıştırdığımda her şey doğru çalışıyor gibi görünüyor, ancak bir kez çıkıyor süreçlerimi başlatmayı bitiriyor. Süreçlerin süresiz olarak çalışmasını istiyorum ve anladığım kadarıyla, konteynerin bunun gerçekleşmesi için çalışmaya devam etmesi gerekiyor. Yine de koştuğumda docker ps -a
şunu görüyorum:
➜ docker_test docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7706edc4189 some_name/some_repo:blah "sh /root/run-all.sh 8 minutes ago Exited (0) 8 minutes ago grave_jones
Ne oluyor? Neden çıkıyor? Bilmek için bash betiğimin sonuna bir süre döngü koyabileceğimi biliyorum, ama çıkmasını engellemenin doğru yolu nedir?