Docker Python不稳定stdout

时间:2019-01-14 20:14:11

标签: python docker logging stdout flush

我有下一个Dockerfile:

FROM ubuntu:16.04
ENV PYTHONIOENCODING=UTF-8
ENV PYTHONUNBUFFERED=1
ADD . /src
WORKDIR /src
ENTRYPOINT ["python3"]
CMD ["-u", "bot.py"]

此dockerfile与docker-compose一起使用:

version: '3'
services:
  something:
    build: .
    networks:
      - proxy
    volumes:
  - E:\tmp:/src/tmp
ports:
  - "6881-6889:6881-6889/udp"
  - "6881-6889:6881-6889/tcp"
  - "6891:6891/udp"
  - "6891:6891/tcp"
  - "6771:6771/udp"
  - "6771:6771/tcp"
  - "4433-4434:4433-4434/udp"
  - "4433-4434:4433-4434/tcp"
  tor:
    image: "dperson/torproxy"
    networks:
      - proxy
networks:
  proxy:
    driver: bridge

我正在Windows 10上使用docker“ Version 2.0.0.0-win81(29211)Channel:stable Build:4271b9e”运行它:docker-compose up -d

此python脚本中有很多日志记录到stdout。此时,我正在使用以下代码打印所有内容:“ print(” Exception:“ + str(exp),flush = True)”

我几乎每次都无法获得用“ docker logs”打印的任何内容。有时我有部分输出(以正确的顺序)。通常我什么都没有。为什么?

python 3.5.2

P.S。 抱歉,将所有内容都冲洗掉只是我的尝试,而不是规则。

1 个答案:

答案 0 :(得分:0)

我找到了问题的根本原因。我有2个相同脚本的实例。