Запуск приложения юнит тест инсайдерской Docker контейнера - PullRequest
0 голосов
/ 08 января 2020

Я недавно начал использовать docker, и я контейнер python приложения. Я использовал следующий Dockerfile.

FROM python:3.6.5

# working directory
WORKDIR /usr/src/app

# copy requirement file to working directory
COPY requirements.txt ./

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

ENTRYPOINT ["python", "./run.py"]

У меня есть какой-то модульный тест, который я вызываю с помощью pytest. Я думал, как мне включить это в контейнер docker, чтобы модульные тесты выполнялись внутри контейнера docker. Должен ли я создать другой образ для этого. Каковы ваши рекомендации по нему.

Ответы [ 2 ]

2 голосов
/ 08 января 2020

Я не уверен, каков масштаб вашего приложения и для чего вы хотите использовать Docker? То, что ваше приложение выполняется в Docker, не означает, что вы должны запускать свои тесты также в Docker.

Это несколько вариантов, которые вы можете проверить, от минимальных усилий до максимальных усилий.

Локально запускайте свои тесты

$ python -m unittest tests/* 

Используйте Python виртуальное окружение

Если вы думаете о том, чтобы не портить локальные зависимости и просто использовать их Docker, вы можете просто использовать venv и запускать там свои тесты.

$ python3 -m venv venv
$ . venv/bin/activate
$ python3 -m unittest tests/* 

Тогда вы можете просто удалить каталог или виртуальную среду

Использовать Jenkins или аналогичные инструменты

Это идеальное решение, если вы пишете серьезный проект. Jenkins (или аналогичные инструменты) поддерживает докернизированный запуск заданий. Jenkins будет создавать контейнер docker каждый раз, когда вы захотите запустить задание. Вы просто указываете, какую команду вы хотели бы дать, это может быть просто, как в первом варианте. Вот ссылка для Jenkins с Docker поддержкой .

0 голосов
/ 08 января 2020

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

docker run --entrypoint

Если вашей команде нужны аргументы, обязательно передайте их после имени изображения

docker run --entrypoint "pytest" image_name arg1 arg2 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...