gcloudコマンドを実行するためだけのdocker-compose
はじめに
「ローカルを汚さずに××」の話に毎回出てくる docker
ですが、今回は 「ローカルを汚さずにGoogle Cloud SDK環境を作る」 という何番煎じか分からない内容を自分用のメモとして残しておこうと思います。
docker-compose.yml
早速ですが、 docker-compose.yml
は以下の記述になります。
services:
sdk:
image: google/cloud-sdk
platform: linux/x86_64
working_dir: app
tty: true
volumes:
- ./:/app
- ./gcloud:/root/.config/gcloud
platform
今回使用している端末がM2のMacであるため、アーキテクチャを指定するために platform
を指定しています。
working_dir
カレントディレクトリを app
にマウントしているので、作業ディレクトリもそちらに設定しています。
volumes
次回以降の起動時も認証情報を保持できるように、認証情報が格納されているディレクトリ(/root/.config/gcloud
) をマウントしておきます。
認証設定
初回起動時には認証設定が必要です。まずはコンテナを立ち上げ
docker-compose up -d
auth login
コマンドで認証します。
docker-compose run sdk gcloud auth login
URLが表示されてAPIトークンの入力待機状態になるので、ブラウザでそのURLにアクセスして認証を行い、取得したAPIトークンを待機中のコンソールに貼り付けたら認証完了です。
コマンド実行
認証が完了したら、以降は以下の構文で gcloud
コマンドが実行できます。
docker-compose run sdk gcloud config list
エイリアスの設定
毎回 docker-compose run sdk gcloud ...
を入力するのは長いので、エイリアスを設定して省略しても良いと思います。
alias gcloud='docker-compose run sdk gcloud'
今回は docker-compose
で環境を構築している関係上 ./bashrc
等にエイリアスを登録しても該当の docker-compose
が起動しているディレクトリでしか使えません。
それでは気持ちが悪いので都度エイリアスを設定したいところですが、今回はエイリアスを設定するこのスクリプト自体が長いので、開発を始める度にいちいち入力するのは面倒です。
そこで以下のような内容の alias.sh
のようなファイルを作成し、
#!/bin/sh
alias gcloud='docker-compose run sdk gcloud'
こちらを source
で読み込む事で、シェルスクリプトに書かれているエイリアスをカレントシェルに読み込む事ができます。
source ./alias.sh
開発準備を簡単にするシェルスクリプト
僕は諸々の準備手順をまとめて、以下のコマンドを ready.sh
としてプロジェクトのルートに置いておき、作業開始前に実行しています。
#!/bin/sh
alias gcloud='docker-compose run sdk gcloud'
docker-compose up -d
sleep 1
gcloud config list
source ./ready.sh
終わりに
内容としてはとても簡単なのですが、 docker-compose
にしばらく触れていなかったせいで色々と忘れていたので、備忘録として残しておきます。
同じ事で調べ物をしている人が、1秒でも早くコーディングに辿り着くお手伝いができたなら幸いです。
おまけ
諸事情あって Docker Desktop
が使えなかったので、 Lima
を導入しました。
インストール自体は brew
で簡単に行えます。
brew install lima docker docker-compose
テンプレートを使うことによってセットアップも簡単に行えるのですが、M2搭載のMacはアーキテクチャの違いによってそのテンプレートでは動かないようで…
以下の記事の通りにyaml
を書いてインスタンスを起動させました。
こちらも備忘録として残しておきます。
Discussion