Я пытаюсь создать docker изображение из Maven, которое включает в себя артефакты из другого проекта Maven. Но примеры, которые я скопировал, похоже, не работают.
Я думаю, что проблема здесь в том, что я не очень понимаю, как работают сборки, и поэтому прошу помощи в том, что я хочу сделать здесь. Я создал надуманный простой пример того, что я пытаюсь сделать здесь:
https://github.com/sodved/java-docker-demo/tree/0.0.1-0
pom.xml
sod-java/pom.xml
sod-java/src/main/java/sodved/Sod.java
sod-docker/pom-depency.xml
sod-docker/pom.xml
sod-docker/src/main/docker/setup.sh
sod-docker/src/main/docker/Dockerfile
sod-docker/src/main/docker/run.sh
Итак, мой проект состоит из двух модулей:
- sod- java, который создает исполняемый файл jar (который просто записывает файл в
/tmp/sod.txt
) - sod- docker, который создает альпийское изображение java с Dockerfile
- setup. sh запускается при построении образа. Он запускает java, чтобы создать
/tmp/sod.txt
- run. sh - команда по умолчанию, записывает содержимое
/tmp/sod.txt
файла
До сих пор я пробовал два подхода к встроенному <assembly>
:
В обоих случаях я не вижу jar-файла, скопированного где-либо сборкой или в tar-файле, который подключает docker создает и поэтому я получаю сообщение об ошибке при попытке сослаться на jar в команде Dockerfile COPY
.
Я знаю, что пример немного надуманный. Но это просто и соответствует стандартному способу, которым мы делаем вещи на работе. Поэтому у меня нет большой гибкости в отношении инструментов, макетов и т. Д. c.
Реальный случай используется для создания образов базы данных. Получить базовый образ, запустить java код для управления базой данных, сохранить как новое изображение для последующего использования.
TLDR: Как указать groupId, artifactId, версию и получить соответствующий Артефакт включен в мое docker изображение. Сам источник docker не содержит java.