為什麼我的分離 Docker 容器不顯示 Python 列印輸出?

Susan Sarandon
發布: 2024-11-23 04:32:20
原創
812 人瀏覽過

Why Doesn't My Detached Docker Container Show Python Print Output?

Python 應用程式中分離的Docker 容器和列印輸出

在分離的Docker 容器中執行Python (2.7) 應用程式(使用-d 標誌)時,使用者可能會遇到應用程式的print 語句不產生任何輸出的情況。

理解 Python 輸出緩衝

Python 預設使用緩衝輸出,這表示它在將輸出傳送到螢幕之前將其儲存在緩衝區中。在分離的容器中,此緩衝區可能無法足夠頻繁地刷新,從而導致缺少輸出。

使用無緩衝輸出

要解決此問題,可以將無緩衝輸出與-u 一起使用flag:

CMD ["python", "-u", "main.py"]
登入後複製

這確保輸出立即寫入螢幕,無論緩衝如何設定。

Docker 日誌關聯

使用無緩衝輸出,列印語句將在Docker 日誌中可見:

docker logs myapp
> App started
登入後複製

不帶「-u」的分離容器行為

當未使用-u標誌時,印在分離中的行為如下容器:

  • 輸出儲存在緩衝區中。
  • 如果緩衝區已滿,則將其刷新到螢幕。
  • 如果容器在緩衝區之前退出已滿,輸出遺失。

調試中提示

  • 使用python -u 標誌:使用Docker 外部的無緩衝輸出測試應用程序,以確保問題是特定於容器的。
  • 檢查docker 日誌: 即使沒有 -u 標誌,輸出也應該在 Docker 日誌中可見,儘管延遲。
  • 附加到容器:如果緩衝區小到足以在分離之前刷新,則使用 docker Attach 附加到容器可能會顯示輸出。

以上是為什麼我的分離 Docker 容器不顯示 Python 列印輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板