Как включить тесты при создании Dockerfile

Пару месяцев назад я создал dockerfile, который создает образ Linux с парой виртуальных сред anaconda python с разными пакетами.

По какой-то причине один из модулей в python35 больше не может быть импортирован (GDAL), что вызвало более серьезный вопрос: как включить тесты при написании файлов докеров?

Я хочу проверить, работают ли модули должным образом в различных средах Python. Некоторые модули не выдают ошибок во время установки, но имеют некоторые нарушенные зависимости, отсюда и тестирование.

Уже будет полезен первый тест импорта:

в python27

import module1 
import module2
..
import moduleN

в python35

import module1  
import module2 
..
import moduleN

Рабочий процесс будет следующим: Скомпилировать образ -> Выполнить тесты -> Распространение с помощью docker hub

Как включить этап тестирования в этот рабочий процесс?

[РЕДАКТИРОВАТЬ] Я добавил две строки в свой файл докеров:

COPY test_python27.py /
RUN [ "/opt/anaconda3/envs/python27/bin/python", "./test_python27.py" ]

который запустит скрипт python. Однако вывод этого сценария не записывается в журнал докеров. Что еще более важно, такие ошибки, как ZeroDivisionError, не приводят к сбою сборки. Как это решить?

Я написал некоторую оболочку для выполнения поиска и замены строк в моем Dockerfile, поэтому каждая среда имеет синтезированный пользовательский Dockerfile.

Scott Stensland 05.04.2018 15:16

если ваша сборка Dockerfile выходит из какой-то команды с чем-то еще, что 0, она останавливает сборку, поэтому, если вы добавляете это в Dockerfile, она всегда отменяет сборку RUN exit 420

Mazel Tov 05.04.2018 15:18

Могу я просто RUN python27test.py и сохранить файл python27test.py в том же каталоге, что и файл докеров?

Rutger Hofste 05.04.2018 15:23

вам нужно сначала скопировать его в образ с COPY, и он может сработать

Mazel Tov 05.04.2018 15:34

Сейчас пробую: ADD test_python27.py /CMD [ "/opt/anaconda3/envs/python27/bin/python", "./test_python27.py" ]

Rutger Hofste 05.04.2018 15:40

CMD - это когда вы запускаете контейнер, вы должны добавить его в RUN

Mazel Tov 05.04.2018 16:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
6
60
0

Другие вопросы по теме