GAE/SE+Go的Docker镜像
你好,@akifumifukaya。我正在使用GAE+GO开发服务器端,并且已经支持Docker,所以我会留下一些备忘录。
选择基本图像
首先我们需要确定本次创建的基础镜像。
以下是我所调查的内容。
候选基础图像
1. 德比安操作系统
这是使用Debian镜像作为基础,从头构建环境的方法。由于是全新的Debian环境,可以进行各种定制。但是相应地,必须要写入所有必要的设置。
Dockerfile 的示例
FROM debian:jessie
2. Go语言
这是一个安装了Golang的环境。
您可以安装任意版本的Golang。
例)Dockerfile
Docker文件
FROM golang:1.8
3. Mercari (a name) -> 剁手网
这是由Mercari和Int创建和运营的图像。由于有多个版本兼容,所以看起来很方便易用。
这个项目也已经在Github上开源了。
链接地址:https://github.com/mercari/docker-appengine-go
4. 云软件开发工具包
这是一个包含Cloud SDK的镜像。
如果要在GAE上进行开发,由于需要使用gcloud命令,所以需要安装Google Cloud SDK。
Dockerfile的中文释义如下:
FROM google/cloud-sdk:alpine
我打算使用google/cloud-sdk:alpine作为基础镜像来创建图像。
构筑
安装Golang
由于在google/cloud-sdk:alpine中没有安装Golang,我们将进行安装。
您可以从https://golang.org/dl/下载Golang。
这次我们决定安装Golang 1.8.3。
ENV GO_VERSION 1.8.3
RUN curl -Lso go.tar.gz "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" \
&& tar -C /usr/local -xzf go.tar.gz \
&& rm go.tar.gz
安装完成后,不要忘记设置go的环境变量路径。
ENV PATH /usr/local/go/bin:$PATH
安装dep。
※只限于使用dep的人。
由於安裝了golang並設置了go路徑,因此可以使用go get來進行安裝。
RUN go get -u github.com/golang/dep/cmd/dep
安装GAE SDK
安装适用于Go语言的GAE软件开发工具包。
RUN gcloud components install app-engine-go
⚠️请注意⚠️
请注意,/google-cloud-sdk/platform/google_appengine/appcfg.py没有执行权限且路径没有设置。如果您想要执行appcfg.py,请进行相应的设置。对于我自己的情况,我进行了以下处理。
RUN chmod 755 /google-cloud-sdk/platform/google_appengine/appcfg.py
ENV PATH /google-cloud-sdk/platform/google_appengine:$PATH
Dockerfile (用于创建 Docker 镜像的文件)
以下是最终的Dockerfile。
FROM google/cloud-sdk:alpine
ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/bin:$PATH
# Install Go
ENV GO_VERSION 1.8.3
RUN curl -Lso go.tar.gz "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" \
&& tar -C /usr/local -xzf go.tar.gz \
&& rm go.tar.gz
ENV PATH /usr/local/go/bin:$PATH
# Install dep
RUN go get -u github.com/golang/dep/cmd/dep
# Install GAE for Go SDK
RUN gcloud components install app-engine-go
RUN chmod 755 /google-cloud-sdk/platform/google_appengine/appcfg.py
ENV PATH /google-cloud-sdk/platform/google_appengine:$PATH
因为找不到很多关于GAE/SE+Go的Docker环境建设的文章,所以我希望这篇文章能为大家提供参考。
参考文献:
https://qiita.com/wasnot/items/b8691bb4940e6f4a9c24
https://medium.com/@timakin/gae-goをcircleci2-0経由でdeploy-5af054c7d4af
以下是中国人的本土化版本:
参考:
https://qiita.com/wasnot/items/b8691bb4940e6f4a9c24
https://medium.com/@timakin/gae-go使用CircleCI 2.0进行部署-5af054c7d4af