Docker многоступенчатая сборка: заказ - PullRequest
2 голосов
/ 02 апреля 2020

Это запрос комментариев и мнений. Я довольно новичок в Docker.

. Я хочу контейнеры для производства и разработки (возможно, также модульного тестирования) для проекта Python. Мой поиск указывал на многоэтапный Dockerfile (и несколько docker - составить для их запуска).

Все статьи, комментарии и примеры, которые я нашел по теме, начинаются с образа разработки и используются как FROM для производственной сборки (некоторые добавляют тестовое изображение между ними). Это не имеет смысла для меня. Он включает в себя очистку тестового файла, удаление инструментов и пакетов dev / test, отслеживая, почему каждый пакет был установлен. Склонность к ошибкам.

Разве мы не должны начинать с минимальной настройки «производства» в первую очередь? Затем добавьте необходимые средства отладки и конфигурацию разработки для образа dev?

Каков правильный (руководящий принцип?) Способ ведения дел и почему? Я хочу сделать все чисто.

Заранее спасибо. GG

1 Ответ

0 голосов
/ 05 апреля 2020

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

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

Для тестирования, а затем производства, существует настройка CI / CD. Код момента объединяется в ветке prod, контейнер создается из того же Dockerfile. Затем, после запуска всех тестовых примеров, изображение помещается в docker хаб с последним тегом. Этот окончательный образ готов к развертыванию.

Поскольку у меня один и тот же dockerfile для разработки и производства, тесты выполняются до создания тега для выпуска, любых системных зависимостей или чего-то вроде «Это работает на моем компьютере». система, но не ваша "удаляется. Кроме того, двухэтапная сборка помогает вам создать легкое docker изображение с оптимизированным временем сборки.

...