首页 > 解决方案 > docker-compose 不显示容器的标准输出日志

问题描述

社区!

我在 python 中开发了一些应该通过 rabbitmq 进行通信的服务。Python 脚本看起来是正确的。在我将它们移动到 docker 容器后的事件,它们继续看起来工作(“等待消息”行由有效负载脚本生成):

grafalex@debian:~/Work/partitioner/worker$ docker run -it --network partitioner_pocnetwork worker:latest
 [*] Waiting for messages. To exit press CTRL+C

问题是,一旦我通过 docker-compose 运行相同的程序,我就再也看不到任何日志了。有时日志的一部分可能会出现在控制台中,但只是一部分。

grafalex@debian:~/Work/partitioner/worker$ docker-compose up worker1
Starting partitioner_worker1_1 ... done
Attaching to partitioner_worker1_1

这是 docker-compose.yml 片段

version: "3.9"
services:
  worker1:
    image: worker:latest
    restart: always
    networks:
      - pocnetwork
...
networks:
  pocnetwork:

丢失日志可能是什么问题?它可以是某种标准输出缓冲(如果是这样,我该如何解决)?

标签: dockerdocker-composestdout

解决方案


由于您似乎正在使用预先存在的 docker 网络,因此 docker-compose 中的 docker run 命令的等效项应如下所示:

  worker1:
    image: worker:latest
    restart: always
    networks:
      - pocnetwork
  networks:
    pocnetwork:
      external: true
      name: partitioner_pocnetwork

您需要先声明外部网络。这能解决你的问题吗?


推荐阅读