查看 Docker Swarm 命令行输出

View Docker Swarm CMD Line Output

我正在尝试将一个 python 容器和一个 dynamodb 容器合并到一个堆栈文件中以试验 Docker swarm。我已经完成了关于 docker swarm seeing web apps 运行ning across multiple nodes 之前的教程,但从未独立构建过任何东西。我能够 运行 docker-compose up 没有任何问题,但在 swarm 中苦苦挣扎。

我的docker-compose.yml长得像

version: '3.3'
services:
  dynamodb:
    image: "amazon/dynamodb-local"
    ports:
      - "8000:8000"
  track-count:
    image: "my-app"
    links:
      - "dynamodb:localhost"

运行 docker stack deploy -c docker-compose.yml trial_stack 不会出现错误,但是打印 'hello world' 作为 python 代码的第一行不会显示在终端中。我得到以下作为 CMD 行输出

Ignoring unsupported options: links

Creating network trial_stack_default
Creating service trial_stack_dynamodb
Creating service trial_stack_track-count

我的问题是:

1) 为什么部署服务会忽略链接?我注意到文档中重复了这一点 https://docs.docker.com/engine/reference/commandline/stack_deploy/ 但不确定这是否会导致我的堆栈失败。

2) 假设链接问题已解决,命令行输出将显示在哪里,以确认系统是 运行ning?目前我只有一个节点,我的本地机器,也就是管理器。

作为参考,我的 python 映像由以下 Docker 文件构建:

FROM python:3.8-slim-buster

RUN mkdir /app
WORKDIR /app

RUN pip install --upgrade pip
COPY ./requirements.txt ./
RUN pip install -r ./requirements.txt

COPY / /
COPY /resources/secrets.py /resources/secrets.py

CMD [ "python", "/main.py" ]

您可以更新 docker-compose.yaml 以便为您希望在控制台上查看标准输出的服务启用 tty

更新后的 docker-compose.yaml 应如下所示:

version: '3.3'
services:
  dynamodb:
    image: "amazon/dynamodb-local"
    ports:
      - "8000:8000"
  track-count:
    image: "my-app"
    tty: true
    links:
      - "dynamodb:localhost"

然后当您部署了任务后,要检查服务日志,您可以 运行:

# get the service name
docker stack services <STACK_NAME>

# display the service logs, edited based on user's suggestion
docker service logs --follow --raw <SERVICE_NAME>