查看 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>
我正在尝试将一个 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>