Я хочу, чтобы мой Dockerfile автоматически клонировал мой репозиторий GitHub, используйте Maven для создания .jar-файла и, наконец, используйте указанный .jar-файл в образе, не включая исходные файлы или пакеты Git и Maven.
Возможно ли это, или мне нужно вручную скомпилировать .jar-файл вне Dockerfile, чтобы скопировать его в образ при его создании?
Моя цель - сделать так, чтобы DockerHub автоматически перестраивал мой проектimage всякий раз, когда я добавляю в него новый код.
В настоящий момент мой Dockerfile устанавливает Git и Maven, клонирует мой репозиторий и компилирует .jar-файл. Это прекрасно работает, но не похоже на оптимальное решение, так как пакеты Git и Maven остаются установленными в образе.
#Where we start
FROM openjdk:12-alpine
#Get APK up to date
RUN apk update && apk upgrade
#Install Maven
RUN apk add maven
#Git
RUN apk add git
RUN mkdir /HungryBoiiGit
RUN git clone https://github.com/hannesknutsson/HungryBoii.git /HungryBoiiGit
#Build
RUN mvn -f /HungryBoiiGit clean install
#Save result
RUN mkdir /Executables
RUN cp -r /HungryBoiiGit/target/HungryBoii-distributable/* /Executables
#Remove Git repo
RUN rm -rf /HungryBoiiGit
#Add user and group for running as unprivileged user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
#Define how to start
WORKDIR /Executables
ENTRYPOINT ["java", "-jar", "HungryBoii-1.0-SNAPSHOT.jar"]
Я понимаю, что есть плагины maven, которые создают и переносят образ Docker всякий раз, когда я решаюпостроить мой проект, но это не совсем то, как я хочу это сделать. Я хочу, чтобы автоматизированная сборка на DockerHub сделала это для меня без каких-либо пакетов или источников.