Tambahkan tanda centang di bagian atas skrip Entrypoint Anda
Docker benar-benar perlu mengimplementasikan ini sebagai fitur baru, tetapi inilah pilihan solusi lain untuk situasi di mana Anda memiliki Entrypoint yang berakhir setelah sukses atau gagal, yang dapat menyulitkan untuk debug.
Jika Anda belum memiliki skrip Entrypoint, buat skrip yang menjalankan perintah apa pun yang Anda perlukan untuk wadah Anda. Kemudian, di bagian atas file ini, tambahkan baris ini ke 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
Untuk memastikan yang catmemegang koneksi, Anda mungkin perlu memberikan TTY. Saya menjalankan wadah dengan skrip Entrypoint saya seperti:
docker run -t --entrypoint entrypoint.sh image_name
Ini akan menyebabkan skrip dijalankan sekali, membuat file yang mengindikasikan skrip tersebut sudah berjalan (dalam sistem file virtual kontainer). Anda kemudian dapat memulai kembali wadah untuk melakukan debugging:
docker start container_name
Ketika Anda me-restart wadah, already_ranfile akan ditemukan, menyebabkan skrip Entrypoint berhenti cat(yang hanya menunggu selamanya untuk input yang tidak akan pernah datang, tetapi menjaga wadah tetap hidup). Anda kemudian dapat menjalankan bashsesi debugging :
docker exec -i container_name bash
Saat wadah berjalan, Anda juga dapat menghapus already_randan menjalankan entrypoint.shskrip secara manual untuk menjalankannya kembali, jika Anda perlu men-debug dengan cara itu.