V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
asanelder
V2EX  ›  Docker

使用 docker 的 multi stage build Java 镜像, 太慢了, 怎么破?

  •  
  •   asanelder · 2021-05-20 16:40:27 +08:00 · 1223 次点击
    这是一个创建于 1043 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 中的缓存, 都要重新下载一遍依赖, 怎么破?

    8 条回复    2021-05-21 12:39:03 +08:00
    Yechs
        1
    Yechs  
       2021-05-20 16:44:55 +08:00
    你这没利用到 docker 的缓存,当然很慢了
    momocraft
        2
    momocraft  
       2021-05-20 16:48:06 +08:00
    在 docker 外面打包好 (有 ci cache)

    复制进 jre 镜像然后解压
    Yechs
        3
    Yechs  
       2021-05-20 16:49:01 +08:00
    先 add pom.xml
    然后运行 mvn install
    再 add src 编译
    zliea
        4
    zliea  
       2021-05-20 16:51:56 +08:00
    把.m2 路径统一挂载宿主机
    napsterwu
        5
    napsterwu  
       2021-05-20 16:53:05 +08:00 via iPhone
    1. 外面打包好 jar 2. 把.m2 和整个 target 挂载进去
    asanelder
        6
    asanelder  
    OP
       2021-05-20 18:46:25 +08:00
    @ztechstack #4
    @napsterwu #5

    俺想了解的就是 docker build 时, 怎么挂载宿主机的一个目录, 供 build 阶段使用, 好像做不到吧. (run 阶段可以)

    @momocraft #2 现在的需求就是使用一个容器来打包 jar

    @Yechs #3 没太明白啊, 老哥
    asanelder
        7
    asanelder  
    OP
       2021-05-20 21:06:13 +08:00
    @Yechs #3 嗯, 现在明白了, 顺序很重要....
    Yechs
        8
    Yechs  
       2021-05-21 12:39:03 +08:00
    docker 每一步都有缓存的, 文件没变化的话就使用缓存, 变化了后面就重新执行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1205 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:15 · PVG 07:15 · LAX 16:15 · JFK 19:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.