社内isuconで新卒にボッコボコにされたので、役立たずとして社内に居場所がなくなりそうです、mix3です。
@acidlemon 作 mirage を「使ってテスト環境を立てまくるぜー」みたいなことが割と当たり前になりつつあって今関わってるプロジェクトもいずれはそうしたいなぁということがありまして。(CentOS6だと不都合があるっぽくてCentOS7に移行するなりそこクリアしてからだけど)
いざ「環境作れよ、あくしろよ」となっても困らないように練習しておこうと思い立って、持て余してるさくらvpsの一つをdocker専用にしてみた。ついでにCoreOSなんかも使ってみた。
ISOのアップロードしてリモートコンソールを開く
ところまでは さくらのVPSにCoreOSをインストールしてDocker専用機にする - Qiita を参考にした
sshで繋ぐ
ところは CoreOSをさくらVPSサーバに入れようとして嵌ったのでメモ - Qiita を参考に /etc/systemd/network/static.network を作らずに以下を実行した
sudo ifconfig <network port> <ip address> netmask <netmask>
sudo route add default gw <default gateway IP>
$ sudo vi /etc/resolv.conf
nameserver <DNS1>
cloud-config
も CoreOSをさくらVPSサーバに入れようとして嵌ったのでメモ - Qiita を参考にした
#cloud-config
coreos:
units:
- name: static.network
content: |
[Match]
Name=eth0
[Network]
Address=<IPアドレス>/<サブネットマスク>
Gateway=<ゲートウェイ>
DNS=<DNS1>
DNS=<DNS2>
ssh_authorized_keys:
- ssh-rsa ABCDABCDABCDABCDABCDABCDABCDABCDABCD...
CoreOS のインストールと reboot
インストールは さくらのVPSにCoreOSをインストールしてDocker専用機にする - Qiita を参考に以下のようにした。 記事では -C alpha だけど -C stable にしておいた。
$ sudo coreos-install -d /dev/vda -c cloud-config -C stable
reboot は VPS の管理画面から。 sudo reboot とかすると再度 LiveCD で boot されてしまう。
ログイン
cloud-configの設定によって公開鍵が設定されてるはずなので、それでログイン出来るようになってるハズ。
Docker 無しで mirage を動かしてみる
最新の mirage を落としてくる https://github.com/acidlemon/mirage/releases/download/v0.2.0/mirage-v0.2.0-linux-amd64.zip
解凍したら cp config_sample.yml config.yml して編集
host:
# web api host
# you can use API and Web interface through this host
# webapi: docker.dev.example.net
webapi: mirage.sakura
# host suffix
# if you access to foo.dev.example.net, mirage search "foo" subdomain container
reverse_proxy_suffix: .sakura
listen:
# listen address
# default is only listen from localhost
foreign_address: 0.0.0.0
# listen port and reverse proxy port
http:
# listen 8080 and transport to container's 5000 port
- listen: 80
target: 5000
# not implemented
# we recommend to use frontend http(like nginx) to SSL termination
# HTTPS:
# - 443
docker:
# if you use docker through http, specify like "http://localhost:4243"
endpoint: unix:///var/run/docker.sock
# if you specify this, fill the form as default value on web interface.
# default_image: myapp:latest
storage:
datadir: ./data
htmldir: ./html
で ./mirage として起動すると mirage.sakura でアクセスすると *.sakura で名前解決できるようになっていれば mirage の web interface が見える
dnsmasq
ドメイン持ってる場合は「*」でAレコード設定して mirage.sakura, .sakura をそれに合わせて設定すれば良いかと思う。持ってない場合は dnsmasq 使うと良い感じに名前解決が設定できるのでおすすめ。
brew install dnsmasq して指示に従って起動する
$ brew install dnsmasq
$ cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
$ sudo cp -fv /usr/local/opt/dnsmasq/*.plist /Library/LaunchDaemons
$ sudo chown root /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
$ sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
設定はさっきの *.sakura であればこんな感じで良いかと思う。
$ sudo vim /etc/resolver/sakura
nameserver 127.0.0.1
$ vim /usr/local/etc/dnsmasq.conf
address=/sakura/<IP>
Docker で mirage を起動する
mirage は Dockerfile が用意されていて Docker で起動することもできるので試してみる。
Dockerfile と config.yml を持ってきて config.yml を少し変更する
host:
# web api host
# you can use API and Web interface through this host
# webapi: docker.dev.example.net
webapi: mirage.sakura
# host suffix
# if you access to foo.dev.example.net, mirage search "foo" subdomain container
reverse_proxy_suffix: .sakura
listen:
# listen address
# default is only listen from localhost
foreign_address: 0.0.0.0
# listen port and reverse proxy port
http:
# listen 8080 and transport to container's 5000 port
- listen: 8080
target: 5000
# not implemented
# we recommend to use frontend http(like nginx) to SSL termination
# HTTPS:
# - 443
docker:
# if you use docker through http, specify like "http://localhost:4243"
endpoint: unix:///var/run/docker.sock
# if you specify this, fill the form as default value on web interface.
# default_image: myapp:latest
storage:
datadir: /mirage
htmldir: /opt/mirage/html
コンテナを起動するときのポートフォワードの設定に listen port を合わせておくのと storage をDocker 用のものに合わせておく。
あとは docker build, docker run するだけ
$ docker build -t acidlemon/mirage:latest .
$ docker run -d --name mirage -p 80:8080 acidlemon/mirage:latest
あとは mirage を使うだけ
予習完璧やで(完璧とは言っていない)