ばーろぐわにる

SIerからWEB系?インフラエンジニアにジョブチェンジした見習いの備忘録。投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。

Dockerfileで引数を元にベースイメージを指定する

目的

  • docker buildの引数でDockerfileのベースイメージ(FROM部分)を指定する
    • ベースイメージが環境毎に違う場合(AWSアカウントが別れてて、ECRが別々とか)、1つのDockerfileで違うリポジトリを指定したいときとかに便利

やりかた

Dockerfile

ARG BASE_IMAGE
FROM ${BASE_IMAGE}:latest
RUN hogehoge

コマンド

docker build --build-arg BASE_IMAGE=XXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/ruby .

--build-argを環境変数で指定してあげれば環境差異を吸収できる

備考

  • ARGはFROMの前における唯一の命令
  • FROMの前に宣言したARGはFROMでしか使えない。FROM以降で再度ARGを使いたい場合、もう一度定義してあげる
ARG BASE_IMAGE
FROM ${BASE_IMAGE}:latest
ARG BASE_IMAGE
RUN hogehoge

参考

docs.docker.com