はじめに
-
コンテナ イメージのビルド
このへんのドキュメントを見ながら、gcloud builds
をしていると、ときにdocker buildのoptionを渡したくなるときがあると思います。- 個人的には
--build-arg
で外部から値をインジェクションしたくなりました。
- 個人的には
- 結論から言うと、(これを書いた時点では)コマンドライン引数で指定はできないので、
cloudbuild.yaml
を使います。-
cloudbuild.yaml
を使った例は 変数値の置換 に記載があります。
-
具体例
当初のシンプルなコマンド
gcloud builds submit --tag gcr.io/PROJECT_ID/IMAGE_NAME
これに docker build --build-arg
で変数を渡したい(そしてDockerfileの挙動を変えたい)。
どうするか
cloudbuild.yaml
を作成
cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build',
'--build-arg',
'FOO1=${_FOO1}',
'--build-arg',
'_FOO2=${_FOO2}',
'-t',
'gcr.io/$PROJECT_ID/FOOBAR_IMAGE',
'.'
]
substitutions:
substitutions:
_FOO1: foobar # default value
_FOO2: foobar # default value
images: [
'gcr.io/$PROJECT_ID/FOOBAR_IMAGE'
]
^ Dockerfileの ARG FOO1
と ARG FOO2
が置換される。
作成した cloudbuild.yaml
を引数に指定して、以下のように --substitutions
の指定も行う。
gcloud builds submit --config=cloudbuild.yaml \
--substitutions=_FOO1="bar1",_FOO2="bar2"