Я пытался создать многоэтапную сборку докеров для моего весеннего загрузочного приложения. Проблема заключается в каждом изменении в основной ветке, файл pom.xml изменяется (благодаря плагину выпуска maven), поэтому сложно использовать кеш сборки докеров на этапе сборки, и все зависимости будут загружаться каждый время, когда я запускаю сборку. Насколько я знаю, я не могу монтировать тома во время сборки образа. Экспериментальная версия докера позволяет монтировать тома во время сборки, но она все еще экспериментальная, поэтому я стараюсь ее избегать.
Поэтому я решил попытать счастья с docker-compose, где первый сервис запустит «mvn package» внутри контейнера и создаст jar-файл внутри общего тома, который затем будет использоваться вторым сервисом для создания собственного образа ( в основном добавляя этот jar в свой образ), который будет опубликован в Docker Hub. Все, что я пытался сделать, казалось неправильным. Я не очень разбираюсь в docker-compose, но правильный ли это подход?
Я использую Docker version 18.09.0, build 4d60db4
version: '3'
#Specify all the services you want to create
services:
#service name
build-service:
context: .
dockerfile: Dockerfile-build
volumes:
- ./:/usr/app
- "$(HOME)"/.m2:/usr/mvn/.m2
spring-app:
conext: .
dockerfile: Dockerfile-jar
volumes:
- ./:/usr/app
Есть ли способ использовать локальный репозиторий .m2 на первом этапе. Или любые другие предложения приветствуются.