Просмотр Docker Swarm CMD Line Output - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь объединить контейнер python и контейнер DynamodB в один файл стека, чтобы поэкспериментировать с роем Docker. Я делал уроки по docker рою, видя веб-приложения, работающие на нескольких узлах, но никогда ничего не создавал независимо. Я могу запустить docker-compose up без проблем, но борюсь с роем.

Мой 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) Предполагается, что проблема со связями устранена, и где будет выводиться любая командная строка быть показано, чтобы подтвердить, что система работает? В настоящее время у меня есть только один узел, мой локальный компьютер, который является администратором.

Для справки, мой python образ создается следующим Dockerfile:

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" ]

1 Ответ

3 голосов
/ 13 апреля 2020

Вы можете обновить 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>
...