ホームページ >バックエンド開発 >Python チュートリアル >分離された Docker コンテナーで実行すると、Python アプリが何も出力されないのはなぜですか?

分離された Docker コンテナーで実行すると、Python アプリが何も出力されないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-05 04:03:10730ブラウズ

Why Doesn't My Python App Print Anything When Run in a Detached Docker Container?

Python アプリが分離された Docker コンテナーで何も出力しない理由

分離モード (-d フラグ) の Docker コンテナー内で Python アプリを実行すると、問題が発生する可能性がありますアプリの出力はそうではありません

Reason

Python の "print" 関数はバッファリングされた出力を使用します。これは、出力がすぐに stdout ストリームにフラッシュされないことを意味します。デタッチ モードで実行している場合、コンテナ プロセスはメイン スクリプト (main.py) がループを完了した後に終了します。標準出力バッファがまだフラッシュされていないため、出力は失われます。

解決策

問題を解決するには、- を使用してバッファなし出力を有効にします。 Dockerfile の CMD 内の Python コマンドでの u フラグ命令:

CMD ["python", "-u", "main.py"]

バッファなし出力では、アプリの出力はすぐに stdout に書き込まれ、デタッチ モードでも Docker ログを使用するときに表示されます:

$ docker run --name=myapp -d myappimage
> b82db1120fee5f92c80000f30f6bdc84e068bafa32738ab7adb47e641b19b4d1

$ docker logs myapp
> App started
> [loop output]

以上が分離された Docker コンテナーで実行すると、Python アプリが何も出力されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。