Docker-compose 拉取两个图像,一个应用程序和 fluentd,但没有日志发送到 fluentd 的标准输出

Docker-compose pulls an two images, an app and fluentd but no logs are sent to stdout for fluentd

我是新手,我正在使用两张 docker 图片,一张图片很流畅,另一张图片是我的网络应用程序。 webapp 正在创建日志,fluentd 正在侦听类型为 in_forward 的端口,但日志未发送到 stdout

Docker-compose.yml 文件

  dataporter:
    image: <app-docker>
    command: <associated command>
    ports:
      - 80:8080
    links:
      - fluentd
    logging:
      driver: "fluentd"
      options:
        fluentd-address: :24224
        tag: data-porter

  fluentd:
    image: <fluentd-docker>
    volumes:
      - ./fluentd.conf:/fluentd/etc/fluent.conf
    ports:
      - "24224:24224"

fluentd.conf 文件

<source>
  @type forward
  port 24224
  bind "0.0.0.0"
</source>

<match **>
   @type stdout
</match>

我的应用程序是在 golang 中,我在这个包中放了一些简单的日志语句 import log "github.com/sirupsen/logrus" 所以我的简单日志语句是 log.Info("Infof print") 但在 fluentd 中没有显示新日志 docker除了初始启动语句之外的容器日志。

fluentd 镜像看不到日志的原因是因为 data-porter 镜像需要 fluentd 来完成它的设置,所以尽管 data-porter 容器 运行 它无法正确连接到流利的容器。总之,任何需要连接到 fluentd 的容器都需要等待 fluentd 完成设置。 为了解决这个问题,我有一个脚本可以停止依赖 fluentd 的容器并重新启动它。将 container_name: <name> 添加到 docker-compose.yml 文件以获取服务帮助脚本。

docker-compose up -d
sleep(3)
docker stop <container-name-relying-on-fluentd>
docker-compose up -d