docker - Dockerfile if else condition with external arguments - Stack Overflow
Dockerfile 内で条件に応じて処理を変えたかったので試行錯誤したメモ - ようへいの日々精進XP
前提として、Dockerfile内で制御構文は使えない。使わずシンプルにするっていう思想になっている
1. shell scriptで分岐
これだとshell内でできることは分岐できるがCOPYなどDockerfile内のコマンドには使えない。
2. マルチステージビルドを使う
docker build -t my_docker . --build-arg my_arg=2
baseを基準のイメージとして、複数種類のstageを定義してglobalなARGでstage名を指定する
2’. targetを指定する
--build-arg
で指定するのではなく、マルチステージビルドの --target
で指定する方法。こちらのほうがtargetが明確になっていいと思った。
docker build --target image-dev -t foo .