DockerのBuildKitがヒアドキュメントをサポートしました

f:id:ingnis:20201120144028j:plain

Dockerでヒアドキュメントが使えるようになるみたいです。

DockerfileでのRUNコマンドの記述が楽になりそうです。

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y ...

参考サイト www.docker.com

ヒアドキュメントの機能を利用するには、環境変数 DOCKER_BUILDKIT=1にする必要があります。

buildコマンドで利用するイメージを変更するために、Dockerfileの冒頭に# syntax=docker/dockerfile:1.3-labsを追加します。

ヒアドキュメントが使用できるコマンドはRUNCOPYになります。

RUNコマンドでヒアドキュメントを使う

上のRUNコマンドをヒアドキュメント化するには以下のように記述します。

# syntax=docker/dockerfile:1.3-labs

FROM ubuntu:20.04

RUN <<EOF
apt-get update
apt-get upgrade -y
apt-get install -y ...
EOF

ヒアドキュメントを使うことで、RUNコマンドでの&& \の数珠つなぎから開放されDockerfileの可読性が上がりそうですね。

COPYコマンドでヒアドキュメントを使う

# syntax = docker/dockerfile:1.3-labs

FROM alpine

COPY <<-"EOF" /app/script.sh
    echo hello ${FOO}
EOF

RUN FOO=abc ash /app/script.sh >> /hello
  1. ヒアドキュメントの内容で/app/script.shを作成します。(EOFをダブルクオート囲っているので環境変数は展開されない)

  2. 次のRUNコマンドで/app/script.shを実行します。(/hellohello abcが記述される)

私には利用用途があまり思い浮かびませんが、マルチステージビルドで複雑なbuildをするときに使うときが来るかもしれません。

短いですが以上です。

インゲージではエンジニアを募集しいています。 ご応募お待ちしてます。

↓↓↓↓↓↓↓↓↓↓↓↓↓

ingage.co.jp