如何解決docker logs無法實時輸出腳本打印的內(nèi)容
docker logs無法實時輸出腳本打印內(nèi)容
背景&問題
我在docker-compose.yml的command參數(shù)后面加入了一行運行python腳本的命令:
command:python test.py
那么這條命令會在container生成的時候就開始運行。
但是通過docker logs -f 命令來查看日志時,我發(fā)現(xiàn)py腳本里通過print打印出來的東西并不會實時顯示出來,而是程序執(zhí)行完了才會顯示出來,這并不是我想要的結(jié)果。
但如果進入container手動執(zhí)行python腳本,就可以實時打印出來。
解決
在網(wǎng)上查找資料之后發(fā)現(xiàn),在這種情況下,python會默認緩沖其輸出,所以想要無緩沖輸出,那么加一個“-u” 參數(shù)即可:
command: python -u test.py
這個時候再通過docker logs -f 來查看日志時,你就會看到實時打印出來的結(jié)果
問題解決!
docker logs不打印python程序輸出
docker logs --tail 50 --follow a8
即使容器在正常運行,也不會有輸出打印出來,等也沒用,且不定時的會打印一兩次,最后才發(fā)現(xiàn),原來是python的IO有緩沖,stdout堵住了導致了
只需在python代碼中修改print(flush=True)即可,如果是用的gunicorn或者logging等,需要重新配置下
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決docker run中使用 ./ 相對路徑掛載文件或目錄失敗的問題
這篇文章主要介紹了解決docker run中使用‘./‘相對路徑掛載文件或目錄失敗的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03使用Docker compose啟動自定義jar包的步驟詳解
這篇文章主要介紹了使用Docker compose啟動自定義jar包的步驟,首先我們需要編寫一個docker-compose.yml文件來定義我們的服務傳到我們的云服務器上,本文給大家分享示例代碼,感興趣的朋友一起看看吧2024-03-03