Latar Belakang
Apabila melaksanakan skrip Python dalam bekas Docker, tingkah laku output boleh berbeza bergantung pada sama ada bekas dijalankan secara interaktif atau terpisah mod.
Isu
Dalam mod tertanggal (-d flag), skrip Python mungkin tidak mencetak sebarang output, walaupun bekas kelihatan berjalan seperti biasa. Isu ini menjejaskan apl Python (versi 2.7) yang dimulakan dengan CMD ["python", "main.py"] dalam fail Docker mereka.
Punca
Masalahnya berpunca daripada Tingkah laku output buffer lalai Python. Apabila berjalan tertanggal, penimbal keluaran bekas tidak disiram secara automatik, jadi ia terkumpul sehingga ambang tertentu dicapai. Ini mengakibatkan ketiadaan output yang kelihatan semasa detasmen.
Penyelesaian
Untuk menyelesaikan isu ini, gunakan output tidak buffer (-u flag):
CMD ["python", "-u", "main.py"]
Ini memaksa stdout dan stderr untuk dinyahbuffer, membolehkan output dipaparkan serta-merta dalam berasingan bekas.
Penjelasan
Dengan mendayakan output tanpa buffer, output bekas boleh dilihat dalam masa nyata semasa dipisahkan pelaksanaan.
Atas ialah kandungan terperinci Mengapa Aplikasi Python Dockerized Saya Tidak Menunjukkan Output Apabila Dijalankan Terpisah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!