【问题标题】:Docker compose up not showing console output for linkDocker组成不显示链接的控制台输出
【发布时间】:2017-04-22 17:59:26
【问题描述】:

docker-compose up 没有显示我所有服务的日志输出 (stdout)。

当我手动运行容器时得到输出:

$ docker run -it simple/cra-products /usr/local/bin/cra-products
[Info#INIT] cra-products
[Info#CONFIG] loadConfig
...

但是当我使用 docker-compose 运行它时,输出在附加时停止。

$ docker-compose up cra-products
underwriting_cra-products_1 is up-to-date
Attaching to underwriting_cra-products_1

我已确认它已开启并且正在运行(我的其他服务可以连接到它)。我只是看不到日志输出。

日志输出确实适用于其他容器。

$ docker-compose up underwriting
underwriting_cra-products_1 is up-to-date
Starting underwriting_underwriting_1
Attaching to underwriting_underwriting_1
underwriting_1  | HELLO
...

我做错了什么?我想查看所有容器的日志。

调用 docker-compose stopdocker-compose rm 并重新开始并不能解决问题。将docker-compose up -ddocker-compose logs 一起使用也不行。 cra产品仍然没有输出。

这是 docker-compose 文件:

version: "3"

services:

  underwriting:

    image: simple/underwriting

    command: /usr/local/bin/underwriting

    links:
    - cra-products

    ports:
    - "8011:8011"

    environment:
      - UNDERWRITING_PORT=8081
      - CRA_PRODUCTS_ENDPOINT=http://cra-products:8081

  cra-products:
    image: simple/cra-products:latest
    command: /usr/local/bin/cra-products
    ports:
    - "8081:8081"

    environment:
      - CRA_PRODUCTS_PORT=8081

【问题讨论】:

    标签: logging docker docker-compose stdout


    【解决方案1】:

    将服务设置为按行缓冲标准输出解决了该问题。

    【讨论】:

    • 您能否详细说明您是如何设置“按行缓冲标准输出的服务”?
    【解决方案2】:

    现在已弃用通过链接连接服务,可以在 Docker 的文档中看到:https://docs.docker.com/compose/link-env-deprecated/

    如文档所述:

    相反,您应该使用链接名称(默认情况下,链接服务的名称)作为要连接的主机名。

    为了快速说明这一点,我用jadametz/dpat(只返回主机名)和nginx:stable-alpine 组合了一个简单的示例。

    version: '3'
    services:
      dpat:
        image: jadametz/dpat
        ports:
          - 8081:80
    
      nginx:
        image: nginx:stable-alpine
        ports:
          - 8082:80
    

    现在,在 nginx 容器中(并且在安装 curl 之后),您可以看到,只需引用其他服务,我们就能得到响应。

    [04:24 PM]~/projects ➭ docker exec -it desktop_nginx_1 ash
    / # curl http://dpat
    {
      "node": "809250c001c8"
    }
    

    因此,对于您的 docker-compose.yml 文件,您可以简单地归结为以下内容:

    version: "3"
    services:
      underwriting:
        image: simple/underwriting
        command: /usr/local/bin/underwriting
        ports:
          - "8011:8011"
    
      cra-products:
        image: simple/cra-products:latest
        command: /usr/local/bin/cra-products
        ports:
          - "8081:8081"
    

    【讨论】:

    • 这不能回答 OP 的问题
    猜你喜欢
    • 2015-02-22
    • 1970-01-01
    • 2014-09-06
    • 2018-09-14
    • 2020-03-13
    • 2012-05-19
    • 1970-01-01
    • 2023-02-18
    • 1970-01-01
    相关资源
    最近更新 更多