Una*_*dra 6 docker docker-multi-stage-build
我已成功使用Docker的Multi-Stage功能构建了一些代码,然后将生成的工件复制到最终映像中。
可以将这个大型Dockerfile拆分为多个文件吗?
我想提高各个阶段的可读性。当添加更多阶段时,这将变得更加重要。
编辑:我知道我可以编写一个Makefile(或类似文件),在该文件中首先构建一个名为“ myproject-stage1”的映像,然后使用FROM myproject-stage1 AS build。但是,如果可能,我宁愿避免使用外部构建工具。
如果您的 Dockerfile 当前看起来像:
FROM ubuntu:16.04 AS builder
RUN apt-get install build-essential
COPY . ./
RUN ./build_all_the_things \
&& make install PREFIX=/usr DESTDIR/out
FROM alpine:3.8
COPY --from=builder /out/ /
CMD the_app
Run Code Online (Sandbox Code Playgroud)
您可以轻松地按原样将第一部分拆分为自己的 Dockerfile,然后构建它
docker build -f Dockerfile.builder -t me/builder .
Run Code Online (Sandbox Code Playgroud)
COPY --from必须在您的 Dockerfile 中命名某个前一阶段,但该阶段不需要做太多事情;然后您可以将其后半部分更改为
FROM me/builder AS builder
FROM alpine:3.8
COPY --from=builder /out/ /
CMD the_app
Run Code Online (Sandbox Code Playgroud)
这样做的最大缺点是您需要两个单独的docker build命令来实际构建最终映像。您可以编写一个 shell 脚本来同时执行它们。
| 归档时间: |
|
| 查看次数: |
1099 次 |
| 最近记录: |