LoginSignup
1
0

More than 3 years have passed since last update.

Cloud RunにCLIでDockerコンテナをお手軽にデプロイする方法

Posted at

Google Cloud Platformのステートレスコンテナ実行サービスであるCloud Runに、DockerコンテナをCLIでお手軽にデプロイするスクリプトを作ってみました。
コードはGitHubにあげています。
https://github.com/yolo-kiyoshi/cloud_run_cli

ディレクトリ構成
root/
 ├ .env
 ├ .param
 ├ Dockerfile
 └ scripts/
   └ build_and_push.sh
   └ deploy_cloud_run.sh

前提

  • gcloudコマンドをインストールしていること
  • Cloud Run APIを有効化していること

参考:こんなに簡単にコンテナをデプロイできちゃって良いんですか?GCP Cloud Runでコンテナを爆速デプロイしてみた

Cloud Runとは

Classmethodさんが簡潔にまとめてくれていますので引用します。

Cloud Runは、HTTPでリクエストを受ける事が可能なステートレスコンテナを実行できるサービスです。
Knativeによって構築されており、Cloud Runによる管理または、GKEクラスタ上にデプロイする事が可能です。前者の場合、開発者がインフラストラクチャを意識する必要が無く、スケールアップ/ダウンも自動で行われます。この為、開発者はコア機能の実装にのみ集中できます。
(引用:https://dev.classmethod.jp/cloud/gcp/gcp_cloud_run_tutorial_sys/)

DockerイメージのビルドとGCRへのプッシュ

DockerfileをもとにDockerイメージをビルドし、Container Repositoryにイメージをプッシュします。
(今回は軽量なalpineをベースにテキトーなDockerfileを用意しています。)

Dockerfile
# for sample
FROM alpine:latest
build_and_push.sh
#!/usr/bin/env bash

set -eu

project=${1:-}
image=${2:-}
tag=${3:-latest}

fullname="gcr.io/${project}/${image}:${tag}"

# read setting file
docker build -t ${image}:${tag} .
docker tag ${image}:${tag} ${fullname}
docker push ${fullname}
echo "image successfully pushed to: ${fullname}"

上記をもとに、イメージ名とタグを引数にbuild_and_push.shを実行することで、ビルドとGCRへのプッシュができます。

./scripts/build_and_push.sh <project_name> <image_name> <tag>

Cloud RunへのDockerコンテナのデプロイ

環境変数.envとCloud Run実行引数.paramを用意します。

.env
PATH1=hoge
PATH2=fuga
.param
# set platform from [managed, gke, kubernetes]
PLATFORM=managed
# set region from [managed, gke, kubernetes]
REGION=us-central1
deploy_cloud_run.sh
#!/usr/bin/env bash

set -eu

service=${1:-}
project=${2:-}
image=${3:-}
tag=${4:-latest}

fullname="gcr.io/${project}/${image}:${tag}"

# read param
env=$(cat ./.env  | tr '\n' ',' | sed -e 's/,$/\n/g')
. .param

gcloud run deploy ${service} \
    --image=${fullname} \
    --platform=${PLATFORM} \
    --region=${REGION} \
    --update-env-vars ${env}

上記をもとに、サービス名、イメージ名、タグを引数にdeploy_cloud_run.shを実行することで、GCR上のDockerイメージからCloud Runにコンテナをデプロイできます。

./scripts/deploy_cloud_run.sh <service_name> <project_name> <image_name> <tag>

注意

  • .envに記載した環境変数は、./scripts/deploy_cloud_run.sh実行時に--update-env-varsパラメータにカンマ区切りで展開されので、コメントは入れないこと
  • --clusterなどの実行パラメータを追加する場合は./scripts/deploy_cloud_run.shにも合わせて追加すること
1
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
1
0