LoginSignup
0
0

More than 1 year has passed since last update.

make コマンドで環境ごとに Google Cloud Run をデプロイする (docker build に引数を渡す)

Last updated at Posted at 2022-01-07

以下の例は、環境をプロジェクトで別けていて、develop / production といったサフィックスを持っているという想定です。
環境の変数名は適当に PROJECT_ENV にしてます。

まず、Dockerfile に以下を追記します。

Dockerfile
# ...略...

# PROJECT_ENV という引数を受け取れるようにする
ARG PROJECT_ENV 

# 環境変数 PROJECT_ENV に 引数で受け取った値を横流しする
# 環境変数として使う必要がなければ不要
ENV PROJECT_ENV $PROJECT_ENV 

# ...略...

cloudbuild.yaml を用意します。
gcloud builds submit コマンドで完結させたかったんですが、どうやらできないようです。

cloudbuild.yaml
steps:
  - name: 'gcr.io/cloud-builders/docker'
    args:
      [
        'build',
        '--build-arg',
        'PROJECT_ENV=$_PROJECT_ENV', # substitutions に指定されている変数を `docker build` に横流しする
        '-t',
        'gcr.io/your-project-${_PROJECT_ENV}/your-service-name',
        '.'
      ]
substitutions:
  _PROJECT_ENV: develop # 変数のデフォルトの値を指定
images: ['gcr.io/your-project-${_PROJECT_ENV}/your-service-name']

ビルド関連の準備が整ったので、Makefile を書きます。

Makefile
# 環境変数のデフォルトの値を指定
PROJECT_ENV=develop 

pre:
# e という arg を受け取っていたらその文字列を代入
# - 実際に運用するときは develop / production など、
#   特定の文字列しか受け取れないようにする処理とかを入れたほうがいいかも
ifdef e
PROJECT_ENV=${e}
endif

deploy-setup: pre
    gcloud config set project your-project-${PROJECT_ENV} ;

deploy: pre
    @make deploy-setup ;\
    cd ./path/to/your-app ;\
    gcloud builds submit --config=cloudbuild.yaml \ # 用意しておいた yaml を使って build する
        --substitutions=_PROJECT_ENV="${PROJECT_ENV}" ;\ # substitutions の _PROJECT_ENV に値を横流しする
    gcloud run deploy your-service-name \
        --image gcr.io/your-project-${PROJECT_ENV}/your-service-name \
        --platform managed \
        --region asia-northeast1 ; # region はテキトー

これで、

$ make deploy

で develop 環境へのデプロイ、

$ make deploy -e=production

で production 環境へのデプロイが可能になります。

  終
制作・著作
━━━━━
 ⓁⓈⓅ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0