我将如何创建Gradle应用程序的Docker容器?

时间:2019-04-14 01:17:18

标签: docker gradle

我有一个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

1 个答案:

答案 0 :(得分: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>"]

如果要包装为罐子,则只需在构建器中复制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"]