docker file 如下
FROM maven:3-openjdk-8 AS build
ENV PROJECT_HOME="/projects"
RUN mkdir $PROJECT_HOME
COPY . $PROJECT_HOME
WORKDIR $PROJECT_HOME
RUN mvn clean package
FROM openjdk:8-jre-alpine AS package
ENV APP_HOME="/app"
ENV JAR_NAME="demo-1.0-SNAPSHOT.jar"
RUN mkdir $APP_HOME
COPY --from=build /projects/target/$JAR_NAME $APP_HOME
WORKDIR $PROJECT_HOME
CMD java -jar $APP_JAR_NAME
现在问题是, 每次 build image 时, mvn clean package 无法使用本机.m2 中的缓存, 都要重新下载一遍依赖, 怎么破?
1
Yechs 2021-05-20 16:44:55 +08:00
你这没利用到 docker 的缓存,当然很慢了
|
2
momocraft 2021-05-20 16:48:06 +08:00
在 docker 外面打包好 (有 ci cache)
复制进 jre 镜像然后解压 |
3
Yechs 2021-05-20 16:49:01 +08:00
先 add pom.xml
然后运行 mvn install 再 add src 编译 |
4
zliea 2021-05-20 16:51:56 +08:00
把.m2 路径统一挂载宿主机
|
5
napsterwu 2021-05-20 16:53:05 +08:00 via iPhone
1. 外面打包好 jar 2. 把.m2 和整个 target 挂载进去
|
6
asanelder OP @ztechstack #4
@napsterwu #5 俺想了解的就是 docker build 时, 怎么挂载宿主机的一个目录, 供 build 阶段使用, 好像做不到吧. (run 阶段可以) @momocraft #2 现在的需求就是使用一个容器来打包 jar @Yechs #3 没太明白啊, 老哥 |
8
Yechs 2021-05-21 12:39:03 +08:00
docker 每一步都有缓存的, 文件没变化的话就使用缓存, 变化了后面就重新执行
|