Как правильно определить сервисы в файле compose - PullRequest
1 голос
/ 19 июня 2019

Мне нужно запустить простой сервис на Docker Compose. Первый образ предназначен для размещения ранее созданной службы, а второй образ, который зависит от первого, предназначен для запуска тестов. Итак, я создал Dockerfile:

FROM python:2.7-slim
WORKDIR /flask
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "routes.py"]

Все работает. Я создал несколько простых тестов, которые также работают, и поместил файл в тот же каталог, что и routes.py. Поэтому я попытался создать файл docker-compose.yml и сделал что-то подобное:

version: '2'
services:
    app:
        build: .
        command: 'python MyTest.py'
        ports:
            - "5000:5000"
    tests:
        build:
            context: Mytest.py
        depends_on:
            - app

При запуске я получил ошибку:

TypeError: You must specify a directory to build in path
[13341] Failed to execute script docker-compose

Итак, как мне указать эти каталоги и где я могу разместить их в app или tests сервисе?

Ответы [ 3 ]

0 голосов
/ 19 июня 2019

Измените команду сборки:

...
  build:
    context: .
    dockerfile: Dockerfile
...
0 голосов
/ 19 июня 2019

TypeError: Вы должны указать каталог для встраивания в путь [13341] Не удалось выполнить скрипт docker-compose

При указанной выше ошибке context: должна быть папка для размещения вашего Dockerfile, но, как вы, кажется, могли бы использовать одно и то же изображение для тестирования вашего продукта, я думаю, нет необходимости указывать его.

И я предполагаю, что ваш MyTest.py посетит порт 5000 контейнера вашего приложения, чтобы провести тестирование.,Итак, что вам нужно, это следующее:

version: '2'
services:
  app:
    build: .
    container_name: my_app
    ports:
      - "5000:5000"
  tests:
    build: .
    depends_on:
      - app
    command: python MyTest.py

Здесь вам нужно обратить внимание на следующее: вы должны посетить http://my_app:5000 для теста в MyTest.py.

Между тем, в MyTest.py предлагает вам sleep некоторое время, потому что depends_on просто может обеспечить tests запуск после app, но не может гарантировать, что ваша колба уже готова, вы также можете рассмотреть это дляобеспечить заказ.

0 голосов
/ 19 июня 2019

Вам необходимо указать поле dockerfile, так как вы используете version-2 docker compose.

Проверьте это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...