如何解決docker logs無(wú)法實(shí)時(shí)輸出腳本打印的內(nèi)容
docker logs無(wú)法實(shí)時(shí)輸出腳本打印內(nèi)容
背景&問(wèn)題
我在docker-compose.yml的command參數(shù)后面加入了一行運(yùn)行python腳本的命令:
command:python test.py
那么這條命令會(huì)在container生成的時(shí)候就開(kāi)始運(yùn)行。
但是通過(guò)docker logs -f 命令來(lái)查看日志時(shí),我發(fā)現(xiàn)py腳本里通過(guò)print打印出來(lái)的東西并不會(huì)實(shí)時(shí)顯示出來(lái),而是程序執(zhí)行完了才會(huì)顯示出來(lái),這并不是我想要的結(jié)果。
但如果進(jìn)入container手動(dòng)執(zhí)行python腳本,就可以實(shí)時(shí)打印出來(lái)。
解決
在網(wǎng)上查找資料之后發(fā)現(xiàn),在這種情況下,python會(huì)默認(rèn)緩沖其輸出,所以想要無(wú)緩沖輸出,那么加一個(gè)“-u” 參數(shù)即可:
command: python -u test.py
這個(gè)時(shí)候再通過(guò)docker logs -f 來(lái)查看日志時(shí),你就會(huì)看到實(shí)時(shí)打印出來(lái)的結(jié)果
問(wèn)題解決!
docker logs不打印python程序輸出
docker logs --tail 50 --follow a8
即使容器在正常運(yùn)行,也不會(huì)有輸出打印出來(lái),等也沒(méi)用,且不定時(shí)的會(huì)打印一兩次,最后才發(fā)現(xiàn),原來(lái)是python的IO有緩沖,stdout堵住了導(dǎo)致了
只需在python代碼中修改print(flush=True)即可,如果是用的gunicorn或者logging等,需要重新配置下
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
yum下載docker安裝包安裝到離線機(jī)器的實(shí)例代碼詳解
本文通過(guò)實(shí)例代碼給大家介紹了yum下載docker安裝包,安裝到離線機(jī)器,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12docker中安裝elasticsarch 等鏡像的過(guò)程
這篇文章主要介紹了docker中安裝elasticsarch 等鏡像,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12騰訊云服務(wù)器docker開(kāi)啟端口后無(wú)法訪問(wèn)的解決方法
本文主要介紹了騰訊云服務(wù)器docker開(kāi)啟端口后無(wú)法訪問(wèn)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06解決docker run中使用 ./ 相對(duì)路徑掛載文件或目錄失敗的問(wèn)題
這篇文章主要介紹了解決docker run中使用‘./‘相對(duì)路徑掛載文件或目錄失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03docker入門(mén)教程(利用docker部署web應(yīng)用)
docker是一個(gè)用來(lái)裝應(yīng)用的容器,就像杯子可以裝水,筆筒可以放筆,書(shū)包可以放書(shū),可以把hello word放在docker中,可以把網(wǎng)站放入docker中,可以把任何想得到的程序放在docker中,這篇文章主要介紹了docker入門(mén)(利用docker部署web應(yīng)用),需要的朋友可以參考下2023-02-02使用Docker compose啟動(dòng)自定義jar包的步驟詳解
這篇文章主要介紹了使用Docker compose啟動(dòng)自定義jar包的步驟,首先我們需要編寫(xiě)一個(gè)docker-compose.yml文件來(lái)定義我們的服務(wù)傳到我們的云服務(wù)器上,本文給大家分享示例代碼,感興趣的朋友一起看看吧2024-03-03