Docker Container Başlatılmadığında Debug Konsolu Açmak
Docker Compose ile bir servis build ettin ama çalıştırmaya çalıştığında aniden kapanıyor. `docker ps -a` ile kontrol ettiğinde container'ın "Exited (127)" gibi bir hata koduyla durduğunu görüyorsün. Bu noktada ne yapacağını bilmiyorsan, işte çözüm.
İlk adım container'ın loglarını görmek. Başarısız container'ın ID'sini kopyala ve şu komutu çalıştır:
docker logs 67a0f27524a6Bu sana container'ın neden öldüğünü gösterecek. Örneğin "command not found" hatası alıyorsan, entrypoint script'inde bir sorun vardır. Çoğu zaman satır sonu karakteri (CRLF vs LF) ya da script'in çalıştırılabilir olmaması (chmod +x) sorundur.
Ama loglar yeterli bilgi vermiyorsa, container'ı başlatıp içinde interaktif bir shell aç. Dockerfile'ında `ENTRYPOINT` yerine `CMD` kullanarak test edebilirsin ya da doğrudan bash ile başlat:
docker run -it --entrypoint /bin/bash blog-testprod-django-testprodBu sana container'ın içinde bir shell verecek. Orada environment variable'ları kontrol et (`env`), script dosyasının gerçekten var olup olmadığını kontrol et (`ls -la /app/entrypoint.sh`), ve script'i manuel olarak çalıştırarak hata mesajını görmek için çalıştır (`bash -x /app/entrypoint.sh`).
Hata kodu 127 genellikle "command not found" anlamına gelir. Entrypoint script'inin path'i yanlış ya da bağımlılıklar image'de yüklü değildir. Kaynağa göz at daha detaylı örnekler için.
Bir kez script'i çalıştırabiliyorsan, Dockerfile'ında RUN izinleri düzelt ve tekrar build et. Debug sırasında harcadığın 5 dakika, production'da saatlerce hata ayıklamaktan kurtarır.
0 yorum