始まり
ISUCONの敗北から、もう少し体系的にWebサービスの作成を学ばなければ。と思い始めたので唐突にDockerから始める。Dockerについて、ガッツリ説明するというよりかは、自分の知識の再確認。メモの用途が強い記事。一言まとめ
- https://blog.golang.org/dockerを見る
- 各自の環境に合わせたDocker for ほげほげを導入。自分はMac用:https://docs.docker.com/engine/installation/mac/
- 自分のPCにDocker環境構築 https://docs.docker.com/machine/get-started/
- Docker環境立ち上げ、アプリのビルド、Dockerの実行。
という流れ。
環境など
Goのバージョン
go versionMacの環境
go version go1.7.1 darwin/amd64
sw_versDocker周り
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G1004
docker -vVirtualBox バージョン 5.1.6 r110634 (Qt5.5.1)
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
インストールはここから、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
- FROM golang https://hub.docker.com/_/golang/を基底としたdockerファイル
- ADD コンテナに指定位置にファイルを追加
- RUN コンテナに指定のコマンドを実行
- ENTRYPOINT コマンドの実行
- ↑あれ?RUNとENTRYPOINTの違いは?となった。ので参照ー>http://qiita.com/hnakamur/items/afddaa3dbe48ad2b8b5c
- EXPOSE開放ポートの指定。
とこのようなことをやっているよ。なんだけど、onbuildというDockerfileを使うと以下の様に出来るぞ!と書かれている。(書き換えたのは一体…(まぁ、こんな動作するんやで。と。)
FROM golang:onbuildONBUILD
EXPOSE 8080
ってなんやねん。
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上記コマンド: 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 env localenvでその環境を動かすための環境変数一覧等が表示される。なお、そのコマンドをevalすることによってその一覧を適用出来るようになっている。
eval $(docker-machine env local)
ビルドする!
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環境での実行辺りを
0 件のコメント :
コメントを投稿