Docker環境でRailsを起動するところまで確認する
作業確認流れ
- プライベートなDocker registry(S3 backed)を用意する。
- registryのWEBUIを用意する。
- 手元のmacでdockerが動くようにする。
- 既存のrailsアプリをDockerイメージ化してregistryにpushする。
- Dockerまで動く状態の別の端末からRailsアプリのイメージをpullしてRailsを起動する。
プライベート registryを作る。
プライベートregistryを用意して、開発用のmacでdocker-registryをpullできるようにする。
下記、repos.example.comサーバで行う。
docker-registry
/etc/hosts
127.0.0.1 repos.example.com
- docker起動
#/etc/init.d/docker start
- registryコンテナ起動
$ sudo docker run \ -e SETTINGS_FLAVOR=s3 \ -e AWS_REGION=ap-northeast-1 \ -e AWS_BUCKET=example-docker-repos \ -e AWS_KEY=**** \ -e AWS_SECRET=**** \ -p 5000:5000 \ registry \
- registryコンテナをイメージ化
$ docker commit desperate_pare docker-regisrty-s3
desperate_pareはコンテナ起動時に付けられたコンテナ名
- タグをつけてpushする
$ docker tag 80078c2afa84 repos.example.com:5000/docker-regisrty-s3 $ docker push repos.example.com:5000/docker-regisrty-s3
docker-registry-frontend
ブラウザでregistryを閲覧検索できるようにする。
docker-front.sh
#!/bin/sh docker run \ -d \ -e ENV_DOCKER_REGISTRY_HOST=172.17.42.1 \ -e ENV_DOCKER_REGISTRY_PORT=5000 \ -p 8000:80 \ konradkleine/docker-registry-frontend \
HOSTは127.0.0.1ではだめでdocker registryのIPである172.17.42.1を指定する。
- リバースプロキシ設定追加
<VirtualHost _default_:443> ProxyPass / http://localhost:8000/ ProxyPassReverse / http://localhost:8000/ </VirtualHost>
- 確認
https://repos.example.com/#/repositories
開発用端末のセットアップ
TODO vagrant upでできるようにしたい
VirtualBoxインストール
boot2dockerインストール
$ boot2docker init
$ boot2docker up
$ boot2docker ssh
$ cat /var/lib/boot2docker/profile
DOCKER_TLS=no EXTRA_ARGS="--insecure-registry repos.example.com:5000 --insecure-registry 192.168.59.103:5000 --insecure-registry dockerhost:5000"
$ exit
$ boot2docker shellinit >> ~/.zshrc
export DOCKER_HOST=tcp://192.168.59.103:2375 unset DOCKER_CERT_PATH unset DOCKER_TLS_VERIFY
$ source ~/.zshrc
$ boot2docker restart
- VirtualBoxの設定からポートフォワードの追加
docker-registryをローカルのtcp:5000で立ち上げるため、ポートフォワードを追加する。
127.0.0.1:5000 -> 5000
docker-registryの取り込みと起動
$ docker run -d -p 5000:5000 repos.example.com:5000/docker-regisrty-s3:latest
registryを通してS3にテストイメージをpush
$ echo "FROM rails:onbuild" > Dockerfile
$ docker build -t localhost:5000/sample_rails .
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE localhost:5000/sample_rails latest fa7eb42f096e 17 hours ago 933.4 MB
$ docker push localhost:5000/sample_rails
S3で確認する
別mac端末上でアプリをpullしてそのまま起動する。
前提
- boot2dockerが動いている。
- VirtualBoxの設定でtcp5000-tcp5000のポートフォワード設定がされている。
docker-registry起動
$ docker -run -p 5000:5000 repos.example.com:5000/docker-regisrty-s3 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b7f754807953 repos.example.com:5000/docker-regisrty-s3:latest "docker-registry" 16 seconds ago Up 11 seconds 0.0.0.0:5000->5000/tcp clever_bardeen
pull
$ docker pull localhost:5000/sample_rails
rails起動
$ docker run localhost:5000/sample_rails
[2014-12-19 07:06:37] INFO WEBrick 1.3.1 [2014-12-19 07:06:37] INFO ruby 2.1.5 (2014-11-13) [x86_64-linux] [2014-12-19 07:06:37] INFO WEBrick::HTTPServer#start: pid=1 port=3000