Giriş noktası komut dosyanızın üstüne bir kontrol ekleyin
Docker'ın bunu gerçekten yeni bir özellik olarak uygulaması gerekiyor, ancak burada, hata ayıklamayı zorlaştırabilen, başarı veya başarısızlıktan sonra sona eren bir Giriş Noktasına sahip olduğunuz durumlar için başka bir geçici çözüm seçeneği var.
Henüz bir Entrypoint betiğiniz yoksa, kapsayıcı için ihtiyacınız olan komutları çalıştıran bir komut dosyası oluşturun. Ardından, bu dosyanın en üstüne şu satırları ekleyin entrypoint.sh
:
# Run once, hold otherwise
if [ -f "already_ran" ]; then
echo "Already ran the Entrypoint once. Holding indefinitely for debugging."
cat
fi
touch already_ran
# Do your main things down here
cat
Bağlantıyı sürdürdüğünden emin olmak için bir TTY sağlamanız gerekebilir. Ben benim gibi Entrypoint komut dosyası ile konteyner çalıştırıyorum:
docker run -t --entrypoint entrypoint.sh image_name
Bu, komut dosyasının bir kez çalışmasına neden olarak, zaten çalıştığını belirten bir dosya oluşturur (kapsayıcının sanal dosya sisteminde). Daha sonra hata ayıklama gerçekleştirmek için kapsayıcıyı yeniden başlatabilirsiniz:
docker start container_name
Kapsayıcıyı yeniden already_ran
başlattığınızda, dosya bulunarak Entrypoint komut dosyasının durmasına neden olur cat
(bu yalnızca hiç gelmeyecek olan girdiyi sonsuza kadar bekler, ancak kapsayıcıyı canlı tutar). Daha sonra bir hata ayıklama bash
oturumu yürütebilirsiniz :
docker exec -i container_name bash
Kapsayıcı çalışırken, bu şekilde hata ayıklamanız gerekirse already_ran
, entrypoint.sh
komut dosyasını yeniden çalıştırmak için el ile yürütebilirsiniz .