yt coffee

Study hard, play harder.

Docker で Google Cloud SDK を使う

  • 2019-01-17 05:43
  • #GCP

GCP を使う際に避けて通れないのが Google Cloud SDK ですが、システムの Python 2.7 を期待しているのが微妙だったり、独自に状態を保持しているため気がつくとこの PC でだけデプロイできるみたいなことになりがちです。そもそもシステムに不用意にツールをインストールしたくないという気持ちの問題もあります。

そこで google/cloud-sdk という Google 公式の Docker イメージをローカル環境でも使ってみることにしました。

Docker イメージを用意する

google/cloud-sdk は大きく分けて 3 種類存在しています:

  • latest, VERSION - Debian ベースですべてのコンポーネントがインストールされた大きいイメージ
  • slim, VERSION-slim - Debian ベースでコンポーネントがインストールされていない
  • alpine, VERSION-alpine - Alpine ベースでコンポーネントがインストールされていない

Google AppEngine を使いたかった & AppEngine のコンポーネントは標準でついてくるので、今回はサイズが一番小さい alpine にしました:

docker pull google/cloud-sdk:alpine

インストールされていたツールは以下の通りです。なので 229.0.0-alpine でも同じイメージを使うことができるはずです。

docker run -it --rm google/cloud-sdk:alpine gcloud version
# Google Cloud SDK 229.0.0
# bq 2.0.39
# core 2019.01.04
# gsutil 4.35

認証する

認証情報を永続化するために --name オプションを使います

docker run -it --name gcloud-config \
    google/cloud-sdk:alpine gcloud auth login

表示された URL をブラウザにコピペして指示に従って操作していき、最終的に画面に表示された verification code を今度はターミナルにコピペすれば認証完了です。

SDK を使う

--volumes-from gcloud-config を指定することで先程認証を行った volume をマウントすることができます。

docker run --rm --volumes-from gcloud-config \
    google/cloud-sdk:alpine gcloud config list

余計な container を残さないように --rm をつけつつ、今後はすべてこの volume を使ってすべての情報をコマンドラインオプションで指定することにします。 例えば Google AppEngine のバージョン一覧を表示したい場合は:

docker run --rm --volumes-from gcloud-config \
    google/cloud-sdk:alpine gcloud versions list \
    --project YOUR_RPOJECT_NAME

参考