docker build時にplatform情報を取得したい場合はTARGETPLATFORMが使える
やりたいこと
マルチプラットフォーム向けにDockerイメージを作る際にDockerfile内でplatformを取得したいことがある。
やりかた
ARG TARGETPLATFORMを加えると、環境変数$TARGETPLATFORMによって取得できる。
code:Dockerfile
FROM ubuntu:18.04
ARG TARGETPLATFORM
RUN echo $TARGETPLATFORM
(ARG TARGETPLATFORMがないと取得できなかった。)
以下の#5 [2/2] RUN echo linux/amd64がそれ。
code:console
$ docker build --progress=plain --no-cache .
#1 sha256:1e3461c293c5a2153e49b84e2b2c37a4237a0f8770da85dbed1e8e3692ff1acf #1 transferring dockerfile: 497B done #2 sha256:37c8567383037d90504bfac39de554005d0e8790d95e1385dfe87354cd15b315 #2 transferring context: 2B done #3 internal load metadata for docker.io/library/ubuntu:18.04 #3 sha256:ae46bbb1b755529d0da663ca0256a22acd7c9fe21844946c149800baa67c4e4b #4 1/2 FROM docker.io/library/ubuntu:18.04 #4 sha256:5e691c7ba4998fa4b60d1218bbc4ed9845bfa527d7d91b0c48922bbea45ce425 #5 2/2 RUN echo linux/amd64 #5 sha256:c943c058bf7aa71821a7e618de59a95c473ef9d1fe41581aa848968421ce204e #6 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00 #6 writing image sha256:6bb0cd1e94fad93f9ac96879716adabee2ae1bcc86eb494bc4ed2da937038551 done