使用Docker来配置Go和Google Cloud SDK的环境
为什么使用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
在这篇描述中,您可以创建以下配置的容器。
PackageVersionGolang1.13Google Cloud SDK291.0
如果您想运行其他版本的Golang,请切换标签,因为图像标签适用于291.0-go1.11、291.0-go1.12和291.0-go1.13。(截至2020年5月)
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,
使用谷歌账户登录,
复制显示的代码,
将该代码输入到容器中。
假设这样的话,登录就完成了。
然后,进行项目设置,自由地进行工作。
如果要编写Dockerfile
我会在使用docker-compose时提到的镜像(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