3
5

More than 3 years have passed since last update.

Go + Google Cloud SDK の環境を Docker で準備する

Last updated at Posted at 2020-05-12

なぜ Docker

詳しい理由は
Cloud Functionsで消耗したくない人のために、開発環境のベストプラクティスをまとめていったらDockerに行き着いた話
こちらの記事が参考になりそうです。

軽くまとめると

  • ローカル環境を汚さなくて良い
  • コマンド一発で同じ環境ができるので楽
  • Google Cloud SDK の認証情報をコンテナに閉じ込められる => 複数アカウント、プロジェクトの管理がしやすい

あたりの理由になるかなと思います。

ここで Node.js で説明されている部分を Go に置き換えたのがこの記事、くらいに思っていただければささっと読めるかもしれません。

docker-compose で書く

docker-compose で書くのが好きなので、中身を置いておきます。

version: "3.8"
services:
  gcloud:
    image: tktcorporation/google-cloud-sdk-golang:291.0-go1.13
    working_dir: /go/src/app
    volumes:
      - .:/go/src/app

この記述では、下記の構成のコンテナが作成できます。

Package Version
Golang 1.13
Google Cloud SDK 291.0

image の タグは 291.0-go1.11, 291.0-go1.12, 291.0-go1.13 に対応しているので、 別のバージョンの Golang を動かしたい場合はタグを切り替えてください。(2020/05 時点)

そもそも Golang ってどう使うの?モジュールとかどうやって管理するの?みたいな話はこちらをどうぞ
-> Golang の modules 管理

Google Cloud SDK の使用準備

$ docker-compose run gcloud /bin/bash
$ gcloud auth login
...
Go to the following link in your browser:

    https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx のリンクに飛んで、
Google アカウントでログインして、
そこで表示されるコードをコピーして、
コンテナにそのコードを入力。

とすると、ログインが完了する。

あとは、プロジェクトの設定をしたり、好きに作業する。

Dockerfile を書く場合

docker-compose で書く で使用している image(tktcorporation/google-cloud-sdk-golang:291.0-go1.12) の中で書いている Dockerfile も置いておきます。

各パッケージのバージョンを変更したい時だったりに使えるかと思います。

FROM google/cloud-sdk:291.0.0

ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/bin:$PATH

ENV GOLANG_VERSION 1.13.1

RUN curl -Lso go.tar.gz "https://dl.google.com/go/go${GOLANG_VERSION}.linux-amd64.tar.gz" \
    && tar -C /usr/local -xzf go.tar.gz \
    && rm go.tar.gz

ENV PATH /usr/local/go/bin:$PATH
3
5
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
3
5