6. ● マルチステージDockerfileから並行性を抽出
BuildKit: 次世代 docker build
6
FROM golang AS stage0
...
RUN go build –o /foo ...
FROM clang AS stage1
...
RUN clang –o /bar ...
FROM debian AS stage2
COPY --from=stage0 /foo /usr/local/bin/foo
COPY --from=stage1 /bar /usr/local/bin/bar
0
2
1
7. ●DAGはマルチステージDockerfileを用いて記述できる
BuildKit: 次世代 `docker build`
FROM golang AS stage0
...
RUN go build –o /foo ...
FROM clang AS stage1
...
RUN clang –o /bar ...
FROM debian AS stage2
COPY --from=stage0 /foo /usr/local/bin/foo
COPY --from=stage1 /bar /usr/local/bin/bar
0
2
1
https://t.co/aUKqQCVmXa より引用
7
8. ● BuildKitでは、Dockerfileの最初の行に
# syntax = docker/dockerfile:1.1-experimental
を指定すると,非標準の命令を利用できる
● 例: RUN –-mount=type=cache
○ コンパイラやパッケージマネージャのキャッシュディレクトリを保持できる
○ 将来的には,# syntax = ...を指定しなくても標準で利用できるようになる
新しいDockerfile構文: RUN –-mount=type=cache
# syntax = docker/dockerfile:1.1-experimental
...
RUN --mount=type=cache,target=/root/.cache go build ...
https://github.com/moby/buildkit/pull/442 https://github.com/moby/buildkit/pull/455
8