我有以下运行spring boot application
的docker文件:
# For Java 11, try this
FROM adoptopenjdk/openjdk11:alpine-jre
#
ARG JAR_FILE=/build/libs/pokerstats-0.0.1-SNAPSHOT.jar
#
WORKDIR /opt/app
#
COPY ${JAR_FILE} app.jar
#
ENTRYPOINT ["java","-jar","app.jar"]
问题是,目前我必须首先在主机上运行gradle clean build
,才能在本地计算机上创建jar文件,路径为:
/build/libs/pokerstats-0.0.1-SNAPSHOT.jar
如何将这个gradle clean build
放入我的docker文件中,以便在容器 * 内部 * 完成构建步骤?
- 编辑:**
我希望用户的步骤是:
1.从github
克隆我的项目
1.运行docker build -t pokerstats .
-这将执行gradle构建
1.运行码头集装箱运行-d-p 8080:8080扑克统计
用户将从github克隆我的项目-然后我希望他们能够运行docker容器,而不必先使用gradle构建项目-也就是说,我希望docker文件进行构建并将jar复制到容器中。
2条答案
按热度按时间wwtsj6pe1#
在阅读this article后,我已经能够使用多阶段Docker构建来解决这个问题。请参见下面的Docker文件:
hgqdbh6s2#
构建阶段
FROM等级:jdk 11-alpine竣工图_阶段
COPY --chown=gradle:gradle . /主页/gradle
RUN分级构建||返回1
Package 阶段
从打开的文件:11.0.11-jre
应用程序主目录=/app
复制--from=构建阶段/主目录/分级目录/构建/库/$商品名$应用程序主目录/
工作目录$应用程序主目录
运行组添加-r -g 1000用户&&用户添加-r -g用户-u 1000用户运行chown -R用户:用户/应用程序
USER用户
入口点执行java -jar ${人工制品名称}