読者です 読者をやめる 読者になる 読者になる

osechiman’s blog

開発備忘録

GAE/go用のDockerfileを作った

GAE/go用のDockerfileを作った

やりたかったこと

GAE/goのスコーンと使える環境を作りたいんです。

できたこと

ubuntuベースでGAE/goが使えるDockerfileができました。

# GAE-GOの開発環境
FROM ubuntu:latest

# 作者名
MAINTAINER osechiman

# packageのupdate
RUN apt-get update

# 日本の環境に合わせる
RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# shellをbashにする
RUN ln -fs /bin/bash /bin/sh && /bin/bash

# 日本の環境に対応する為の環境変数
RUN echo "export LC_ALL=jp_JP.UTF-8" >> /etc/profile && \
    echo "export LANGUAGE=jp_JP.UTF-8" >> /etc/profile && \
    echo "export PATH=$PATH:/usr/local/bin/go_appengine" >> /etc/profile

# 必要なコマンドと使いたいコマンドをinstall
RUN apt-get install -y \
    make \
    gcc \
    less \
    curl \
    wget \
    ca-certificates \
    python \
    tar \
    man \
    tree \
    tmux \
    bash-completion \
    git \
    vim \
    jq \
    golang \
    unzip

# go_appengineのSDKをダウンロード
RUN wget https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.40.zip && \
    unzip go_appengine_sdk_linux_amd64-1.9.40.zip -d /usr/local/bin && \
    rm go_appengine_sdk_linux_amd64-1.9.40.zip

# mountする想定でソースを管理するディレクトリ作成
RUN mkdir /source

# 可変的なデータを格納するディレクトリ作成
RUN mkdir /storage

## VOLUME設定
VOLUME /source

## 自分のgitから.bashrcを取得
RUN wget -O /root/.bashrc https://raw.githubusercontent.com/osechiman/MyConf/master/gae/bashrc

## echoをgo getする
RUN /usr/local/bin/go_appengine/goapp get -u github.com/labstack/echo

## ポートを設定
EXPOSE 8000:8000 8080:8080 18080:18080

## ENTRYPOINTの設定
ENTRYPOINT /usr/local/bin/go_appengine/dev_appserver.py --host 0.0.0.0 --admin_host 0.0.0.0 --api_host 0.0.0.0 --api_port 18080 --storage_path /source/storage --skip_sdk_update_check true /source

# 使い方
#
## buildコマンド
### docker build -t gae-go:1.0 [Dockerfile-DirPath]
#
## コンテナ起動コマンドサンプル
### docker run -itd -p 8080:8080 -p 8000:8000 -p 18080:18080 -v [source-dir]:/source --name gae-go gae-go:1.0 
#
# 作られるイメージはgo_appengine_sdkを解凍して使えるようにした最低限のもの
# mount先のディレクトリでコードを書いていく感じで

docker-machineで動かしているのでローカル環境で確認したい場合

192.168.99.100:8080

とか

192.168.99.100:8000

で見れるはずです。

最初alpineベースで作ったら動かなかったので試しにubuntuベースにしたら動いたのでもうこれで良し。

できなかったこと

alpineベースでGAE/goのDockerfileを作ること。

/usr/local/bin/go_appengine/dev_appserver.py --host 0.0.0.0 --admin_host 0.0.0.0 --api_host 0.0.0.0 --api_port

alpineで作った時はこのオプション指定する部分でなんかこけたんだよなぁ...。