Для вашего контейнера времени выполнения вы не должны использовать javac
.Gradle делает сборку для вас.Таким образом, вам нужно будет беспокоиться только о том, как работает Gradle.Кроме того, вы хотите убедиться, что вы правильно копируете материал, создаваемый вашим сборщиком.
Я не знаю, какое приложение вы используете и как выглядит конфигурация Gradle, поэтому яЯ собираюсь сделать некоторые предположения здесь.
Я настоятельно рекомендую вам использовать плагин приложения, если вы генерируете веб-приложение.В этом случае installDist
поместит все необходимое в папку build/install
.Как только это будет сделано, вы можете просто использовать сгенерированный сценарий оболочки для вашего CMD
/ ENTRYPOINT
Например:
# Start with a base image containing Java runtime
FROM gradle:jdk10 as builder
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle installDist
FROM openjdk:10-jre-slim
EXPOSE 8080
COPY --from=builder /home/gradle/src/build/install/<app name>/ /app/
WORKDIR /app
CMD ["bin/<app name>"]
Если вы упаковываете как банку, выможно просто скопировать банку, сгенерированную задачей build
/ fat jar в компоновщике, а затем запустить этот
# Start with a base image containing Java runtime
FROM gradle:jdk10 as builder
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle build
FROM openjdk:10-jre-slim
EXPOSE 8080
COPY --from=builder /home/gradle/src/build/<jar output path>/<app name>.jar /app/
WORKDIR /app
CMD ["java -jar <app name>.jar"]