如何创建Gradle应用程序的docker容器?

问题描述 投票:1回答:1

我有一个gradle spark应用程序,需要与docker一起使用才能创建容器。我是docker的新手,我很难设置Dockerfile。

在Dockerfile中,我尝试执行build.gradle并运行Main.java。

# 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

COPY ./ /tmp/

CMD ["cd tmp/src/main/java/Empowering/"]
CMD ["javac Main.java"]

EXPOSE 8080

docker gradle
1个回答
0
投票

对于运行时容器,您不应该使用javac。 Gradle正在为你做构建。因此,您只需要担心运行Gradle正在生成的内容。此外,您希望确保正确复制构建器正在构建的内容。

我不知道你正在运行什么类型的应用程序以及你的Gradle配置是什么样的,所以我将不得不在这里做一些假设。

如果您正在生成Web应用程序,我强烈建议您使用应用程序插件。如果是这种情况,installDist会将您需要的所有内容放入build/install文件夹中。一旦到位,您可以简单地为CMD / ENTRYPOINT使用生成的shell脚本

例如:

# 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>"]

如果你打包成jar,你可以简单地复制构建器中build / fat jar任务生成的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"]
© www.soinside.com 2019 - 2024. All rights reserved.