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
catBağ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_ranbaş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 bashoturumu yürütebilirsiniz :
docker exec -i container_name bash
Kapsayıcı çalışırken, bu şekilde hata ayıklamanız gerekirse already_ran, entrypoint.shkomut dosyasını yeniden çalıştırmak için el ile yürütebilirsiniz .