GoとDockerのお勉強 #golang #docker

始まり

ISUCONの敗北から、もう少し体系的にWebサービスの作成を学ばなければ。と思い始めたので唐突にDockerから始める。Dockerについて、ガッツリ説明するというよりかは、自分の知識の再確認。メモの用途が強い記事。

一言まとめ

という流れ。

環境など


Goのバージョン
go version
go version go1.7.1 darwin/amd64
Macの環境
sw_vers
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G1004
Docker周り
docker -v
Docker version 1.12.1, build 6f9534c
docker-machine -v
docker-machine version 0.8.1, build 41b3b25
docker-compose -v
docker-compose version 1.8.0, build f3628c7
VirtualBox バージョン 5.1.6 r110634 (Qt5.5.1)

インストールはここから、Docker for Macを選択。
https://docs.docker.com/engine/installation/mac/

公式の導入記事

https://blog.golang.org/docker


  • サンプルをgo get
  • Dockerfileを書いてあるとおりに書き換える

# Start from a Debian image with the latest version of Go installed
# and a workspace (GOPATH) configured at /go.
FROM golang
# Copy the local package files to the container's workspace.
ADD . /go/src/github.com/golang/example/outyet
# Build the outyet command inside the container.
# (You may fetch or manage dependencies here,
# either manually or with a tool like "godep".)
RUN go install github.com/golang/example/outyet
# Run the outyet command by default when the container starts.
ENTRYPOINT /go/bin/outyet
# Document that the service listens on port 8080.
EXPOSE 8080

とこのようなことをやっているよ。なんだけど、onbuildというDockerfileを使うと以下の様に出来るぞ!と書かれている。(書き換えたのは一体…(まぁ、こんな動作するんやで。と。)

FROM golang:onbuild
EXPOSE 8080
ONBUILD
ってなんやねん。
http://docs.docker.jp/engine/reference/builder.html?highlight=onbuild#onbuild
イメージ構築時に実行される命令なんかを記述する。なるほど?
 Goの環境を作った際、「実行するコードをコピー」「ビルド」「インストール」
なんかを予めonbuildしとくことで毎回専用のDockerfile作ってーとかやらずにアプリ用の設定に集中出来るってことか。と解釈。go-wrapperにその辺、まとめてある。

おもむろに、docker-machine

Dockerを動かす環境を自分のPCやAWS、指定のVPC等に用意できる。
docker-machine create --driver virtualbox local
上記コマンドだと、VirtualBox上に環境を構築、localって名前をつける。
docker-machine ls
NAME             ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
local            -        virtualbox   Running   tcp://192.168.99.100:2376           v1.12.1
上記コマンド: docker-machine ls
にて作成した環境の一覧等が見れる。
docker-machine env local
eval $(docker-machine env local)
envでその環境を動かすための環境変数一覧等が表示される。なお、そのコマンドをevalすることによってその一覧を適用出来るようになっている。

ビルドする!

docker build -t outyet .

  • 現在位置のDockerfileの内容でビルドする
  • タグ名はoutyet 

実行する!

docker run --publish 6060:8080 --name test --rm outyet

  • dockerの8080を6060で受け付ける。
  • 名前はtest
  • 終わったらイメージを削除
  • outyetを実行するよ!

これ、どこで確認できんの!?

docker-machine lsした際にURLが表示されているので、http://そのアドレス
でアクセス。

あ、表示されてますね。やったぜ!

まとめ。
  • Goに公式のDockerfileがある。onbuildを利用すると、Dockerfileの記述を減らせる。
  • docker-machineでdockerを動かす環境を構築
  • docker-machine lsで作成した環境一覧表示
  • docker-machine envで動作させる為の環境変数一覧

次はdocker-composeと、VPS環境での実行辺りを




このブログの人気の投稿

[Unity]「落ちたら消えるオブジェクト」の作り方

Firebase と Androidで認証、ストレージ、データベース #firebase