Я могу рассказать вам, как я это делаю и почему это стало для меня лучшим способом.
У меня нет разных изображений, таких как разработка и производство. У меня есть базовый образ, построенный на альпийском с минимальными двоичными файлами и зависимостями. У меня есть простая двухэтапная сборка в моем Dockerfile.
Для тестирования, а затем производства, существует настройка CI / CD. Код момента объединяется в ветке prod, контейнер создается из того же Dockerfile. Затем, после запуска всех тестовых примеров, изображение помещается в docker хаб с последним тегом. Этот окончательный образ готов к развертыванию.
Поскольку у меня один и тот же dockerfile для разработки и производства, тесты выполняются до создания тега для выпуска, любых системных зависимостей или чего-то вроде «Это работает на моем компьютере». система, но не ваша "удаляется. Кроме того, двухэтапная сборка помогает вам создать легкое docker изображение с оптимизированным временем сборки.