我写了一个小脚本来测试docker容器中的一些服务器。
#!/bin/bash
echo started
python /opt/server.py &
nginx -g 'daemon off;'
python服务器会写一些我们需要查看的信息,但是当我运行docker run -P image
或运行docker run -dP image
并使用docker日志检查时它不会显示。
python服务器使用print
和sys.stdout.write
。两者都没有出现
我尝试重定向输出python /opt/server.py >&1
和/ dev / stdout。都没有奏效。来自nginx的日志很好。 docker image将访问日志符号链接到/ dev / stdout。
我查看了/ proc /#/ fd / 1中每个进程运行的所有进程并且它们都指向同一个管道
来自ls的 l-wx------ 1 root root 64 Dec 15 21:18 1 -> pipe:[28195]
我不确定如何使这个工作。
答案 0 :(得分:0)
server.py
看起来像这样吗?
import time
while True:
print('something')
time.sleep(1)
当您在容器内的while循环内打印和睡眠时,Python会做一些奇怪的事情。要使其正常工作,您需要手动刷新循环的打印语句:
import time
import sys
while True:
print('something')
sys.stdout.flush()
time.sleep(1)