Создайте приложение, которое хотите развернуть, в своем Dockerfile.Не включайте только тестовые зависимости, IDE, инструменты управления исходным кодом или что-либо еще: включайте минимальный набор вещей, которые вам нужны для запуска приложения, и ничего более.Не пытайтесь запускать тесты в Dockerfile
: это всего лишь этап упаковки, и вы должны выполнить тесты до этого момента.
Пишите хорошие локальные тесты (например, на земле Java,используя JUnit) и убедитесь, что они проходят.Если вам нужны интеграционные тесты «белого ящика», которые зависят как от деталей кода, так и от внешних сервисов, запустите их локально или в вашей системе CI, но за пределами Docker.
Минимизируйте различия между «производством» и «разработчиком»».В идеале не должно быть никаких изменений кода, и единственными изменениями конфигурации являются такие вещи, как имена хостов базы данных.
Запускайте полные сквозные тесты, используя настройки на основе Docker.Этот шаг может включать запуск Docker Compose в Jenkins (слегка волосатый).Это тест «черного ящика», который связывается только с пользовательским интерфейсом службы или внешними API.Тесты могут или не могут жить в дереве исходных текстов, но они не встроены в контейнер Docker.Возможно, будет проще запускать такие инструменты, как Selenium, за пределами пространства Docker, судя по количеству вопросов SO по настройке.