Используйте docker compose с компиляцией - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу развернуть приложение maven с Docker-контейнером и, если возможно, также протестировать с помощью Docker, но у меня есть некоторые проблемы.

Я из-за использования Java, мне нужно скомпилировать приложение перед использованием.

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

Для тестирования я использовал контейнер базы данных, запущенный вручную, который работал на localhost: 5432.

Если я сейчас запускаю docker-compose, это вызывает ошибку, поскольку контейнер больше не может достигать localhost: 5432.Если я пишу postgres: 5432 в моем application.properties, он не компилируется из-за неизвестного хоста postgres.

Как это сделать.Есть ли способ начать с maven и с postgres на время сборки.

Как видите, я новичок в docker-compose, и у меня пока нет рабочего процесса.

Спасибоза вашу помощь

1 Ответ

0 голосов
/ 26 сентября 2018

Вы должны использовать существующий процесс сборки, ориентированный на десктоп, для сборки и тестирования приложения и использовать только Docker для сборки конечного артефакта развертывания.Если вы жестко программируете расположение базы данных в своем исходном коде, то здесь есть проблема именно того типа, который вы описываете (что вы будете делать, если у вас есть отдельные промежуточные и производственные базы данных, размещенные вашим облачным провайдером?), И вы должны сделать этонастраиваемый.

На этапе docker build невозможно гарантировать наличие какой-либо конкретной сетевой среды, внешних служб или имен DNS, поэтому вы не можете выполнять такие вещи, как запуск интеграционных тестов, которые зависят отвнешняя база данных.К счастью, это проблема, которую сообщество разработчиков программного обеспечения потратило много времени на решение проблем за несколько десятилетий до появления Docker.Хотя многие установщики Docker с энтузиазмом относятся к монтированию исходного кода приложения непосредственно в контейнеры, это гораздо менее полезно для скомпилированных языков и не совсем подходит для управляемых производственных развертываний.

Короче говоря: запускайте Maven так же, как вы это делали до васимел Docker, а затем просто скопируйте ваш Dockerfile получившийся (полностью протестированный) файл .jar в образ.

...