LoginSignup
5
8

More than 5 years have passed since last update.

GAE/SE+GoのDockerイメージ

Last updated at Posted at 2018-05-23

こんにちは、@akifumifukayaです。
GAE+GOでサーバーサイドを開発しており、Docker対応したのでメモを残しておきます。

ベースイメージの選択

はじめに今回作成するイメージのベースイメージを決めます。
以下に、調べたものを残しておきます。

ベースイメージ候補

1. debian

debianイメージをベースとして、一から環境構築を行う方法です。
まっさらなdebian環境となるので、様々なカスタマイズが行えます。
その代わり、必要な設定は全部書く必要があります。

例)Dockerfile

FROM debian:jessie

2. golang

Golangが入っている環境です。
任意のバージョンの入れることができます。

例)Dockerfile

FROM golang:1.8

3. mercari

Mercari, Intが作成・運用しているイメージです。
複数バージョン対応しているので、使い勝手が良さそう。

Githubでも公開されています。
https://github.com/mercari/docker-appengine-go

4. Cloud SDK

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のインストール

GAE for GoのSDKをインストールします。

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

以下が、最終的な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環境構築の記事があまりなかったので、参考になればと思います。

参考
http://takaya030.hatenablog.com/entry/2017/07/08/181136
https://qiita.com/wasnot/items/b8691bb4940e6f4a9c24
https://medium.com/@timakin/gae-goをcircleci2-0経由でdeploy-5af054c7d4af

5
8
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
5
8