V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yuanfnadi
V2EX  ›  问与答

Docker 的多步构建挺好用的

  •  
  •   yuanfnadi · 2017-08-31 23:25:21 +08:00 · 2066 次点击
    这是一个创建于 2421 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前我都是用 daoclou 进行多步构建,先一个镜像 build 好,然后提取出文件,再复制到另外一个镜像里

      compile:
        build_dir: /
        cache: true
        dockerfile_path: /Dockerfile/Dockerfile.build
      extract:
      - /blog
      package:
        build_dir: /
        cache: true
        dockerfile_path: /Dockerfile/Dockerfile.deploy
    

    然后搜索了一下 发现 docker 原生支持多步构建了。 然后在 daocloud 里试了一下啊也支持。

    FROM gradle:4.0.1-alpine as build
    MAINTAINER FandiYuan  <[email protected]>
    
    ADD ./ /tmp/
    
    RUN cd /tmp && \
        gradle build
    
    FROM java:8-jre-alpine
    
    COPY --from=build /tmp/build/libs/diamond-yuan-fast-airport-0.01.jar /
    
    ENTRYPOINT ["java", "-server", "-jar", "/diamond-yuan-fast-airport-0.01.jar"]
    

    在采用多步构建之前,镜像大小在 150m 左右,采用了多步构建以后,只有 70m、基本上就是 jre 的大小了。

    3 条回复    2017-09-01 07:45:31 +08:00
    yuanfnadi
        1
    yuanfnadi  
    OP
       2017-08-31 23:27:41 +08:00
    hexo 的博客这样就能构建出一个很小的镜像了。

    ```
    FROM daocloud.io/diamondyuan/blog-base:latest as buiild

    MAINTAINER FandiYuan <[email protected]>
    ADD / /blog
    RUN mv /temp/node_modules /blog/node_modules && \
    hexo g

    FROM nginx:stable-alpine

    copy COPY --from=build /blog/public/ /usr/share/nginx/html/

    ```


    https://blog.diamondyuan.com/2017/08/10/Continuous_Deployment_for_Hexo/
    terrawu
        2
    terrawu  
       2017-08-31 23:29:13 +08:00
    alpine 又要受益于这个特性了。
    whileFalse
        3
    whileFalse  
       2017-09-01 07:45:31 +08:00
    daocloud 的使用原生多部构建时缓存友好吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5358 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:17 · PVG 15:17 · LAX 00:17 · JFK 03:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.