docker 笔记

  • 分步构建

场景:现在项目的 编译时环境运行时环境 往往不一致,如现在常见的前端项目需要 node 进行构建,但运行只需要一个 nginx

额外的好处:使用分步构建,可以在源码的 依赖描述文件 没有发生变化的时候,避免再次下载依赖。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FROM DEPENDCY_TOOL as DEPENDCY_PROVIDER
WORKDOR /opt/app
COPY dependcy_describe_file /opt/app/dependcy_describe_file
RUN dependcyResolveTool --cache-dir=/opt/dep_cache

FROM BUILD_TOOL as STATIC_FILE_PROVIDER
WORKDIR /opt/app
COPY --from=DEPENDCY_PROVIDER /opt/dep_cache /opt/app/dependencies
COPY src /opt/app
RUN build --dist=/opt/app/dist

FROM RUNTIME_ENV
WORKDIR /opt/app
COPY --from=STATIC_FILE_PROVIDER /opt/app/dist /opt/app/dist
CMD start