GCPのローカル環境をDockerを使って効率化しよう
最近 Google Cloud Platform を上のサービスを開発する機会に恵まれ、Datastore、BigtableやPub/SubなどGCPのクラウドサービスを利用する機会が増えてきました。
以前こちらの記事で起動の自動化をしたのですが、 インストールするのが面倒だったり、非エンジニアの人が開発をするようになり、 設定方法に関する質問を受ける機会が多くなってしまったので、Dockerfileを用意してコマンド1つで開発環境を作れるように改善してみました。
今回はその設定方法を書かせてもらいます。
ベースとなるイメージの選択
前提として今回は gcloud のうち Datastore のエミュレーターの設定をおこないます!
まずベースとするDockerイメージを選択します。 今回はGoogleが公式で提供しているものがあるのでこちらを採用します。
これで gcloud を動かす環境を作ることができます。
起動設定
イメージの選択はできたので、次はコマンドを叩けば一発で起動できるように起動用のシェルを書いていきましょう!
プロジェクトのIDと起動するPORTはかぶらないようにしたいので、環境変数で変更できるようにします。
#!/usr/bin/env bash gcloud config set project ${DATASTORE_PROJECT_ID} gcloud beta emulators datastore start \ --data-dir=/opt/data \ --host-port=${DATASTORE_LISTEN_ADDRESS} \ ${options}
start
という名前で保存します。
次に起動用シェルを実行ためのDockerファイルを作成します。
FROM google/cloud-sdk:alpine RUN apk add --update --no-cache openjdk8-jre &&\ gcloud components install cloud-datastore-emulator beta --quiet VOLUME /opt/data COPY start . ENTRYPOINT ["./start"]
起動設定
最後にコマンドで簡単に起動をできるように docker-compose の設定をしていきましょう!
docker-compose にしておけば、今後RedisやMySQLいった他のミドルウェアが増えてもこちらで一元管理することができます。
version: "3.6" services: datastore: container_name: datastore build: context: ./datastore dockerfile: Dockerfile environment: - DATASTORE_PROJECT_ID=dummy - DATASTORE_LISTEN_ADDRESS=0.0.0.0:8081 ports: - "8081:8081"
以上で設定が完了です。
最終的なディレクトリ構成はこのような形になりました。
project ├── datastore │ ├── Dockerfile │ └── start └── docker-compose.yml
起動確認
実際にターミナルから実行をしてみましょう
docker-compose up -d
起動を確認してみます。
$ curl 0.0.0.0:8081 Ok
Okと返ってくれば起動できています。 これでDockerを使ってGCPのエミュレーターを起動できました!!
実際にこの設定で私のチームで運用をしていますが、Dockerで管理することによりコマンドで簡単に起動ができるようになりました。 特に非エンジニアの人はREADMEを書いても設定をするのが難しいのでDockerにすることでみんな環境の構築が楽になりました。 GCPで開発をしていて、ローカル環境を用意したいときはDockerでの管理を検討してみると良いと思います。