当我以开发环境运行flask的项目时(docker-compose启动),发现有些调试的代码不能及时输出到屏幕。 可以通过注释一行代码来获取调试结果???(我不能理解为什么这样子,但至少这种方法有效,会跟进研究)

研究发现,docker log 容器ID本质是读取docker inspect 容器ID | grep LogPath的日志文件,但这就涉及到行缓存的问题了。也就是运行结果存在缓存区没能立即写入到文件中。

PYTHONUNBUFFERED 参数可以关闭行缓存,从而解决调试时的问题。

使用方法:

# install netcat
FROM python:3.7-slim
ENV LANG=C.UTF-8 TZ=Asia/Shanghai PYTHONUNBUFFERED=1
RUN sed -i "s/deb.debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list && \
    sed -i "s/security.debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list && \
    apt-get update && \
    apt-get -y install netcat && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

results matching ""

    No results matching ""

    results matching ""

      No results matching ""