Пару месяцев назад я создал 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 выходит из какой-то команды с чем-то еще, что 0, она останавливает сборку, поэтому, если вы добавляете это в Dockerfile, она всегда отменяет сборку RUN exit 420
Могу я просто RUN python27test.py и сохранить файл python27test.py в том же каталоге, что и файл докеров?
вам нужно сначала скопировать его в образ с COPY, и он может сработать
Сейчас пробую: ADD test_python27.py /CMD [ "/opt/anaconda3/envs/python27/bin/python", "./test_python27.py" ]
CMD - это когда вы запускаете контейнер, вы должны добавить его в RUN






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