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

广告
将在 10 秒后关闭
bannerAds