===
目的
Dockerでアプリ環境を構築するまでの手順を整理する
前提
ソフトウェア | バージョン | 備考 |
---|---|---|
OS X | 10.8.5 | |
boot2docker | 1.0.0 | |
rbdock | 0.2.0 |
構成
詳細
セットアップ
VMとデータを共有できるようにする。
ここからISOイメージをダウンロードする。
$ boot2docker stop
$ mv ~/.boot2docker/boot2docker.iso ~/.boot2docker/boot2docker.iso.backup
$ mv ~/Downloads/boot2docker-v1.0.1-virtualbox-guest-additions-v4.3.12.iso ~/.boot2docker/boot2docker.iso
$ VBoxManage sharedfolder add boot2docker-vm -name home -hostpath /Users
$ boot2docker up
rbdockのインストール
$ gem install rbdock
アプリをつくる
$ hazel sample_sinatra
create sample_sinatra/config/initializers
create sample_sinatra/lib
create sample_sinatra/spec
create sample_sinatra/lib/.gitkeep
create sample_sinatra/public/stylesheets
create sample_sinatra/public/stylesheets/main.css
create sample_sinatra/public/javascripts
create sample_sinatra/public/javascripts/.gitkeep
create sample_sinatra/public/images
create sample_sinatra/public/images/.gitkeep
create sample_sinatra/public/images/hazel_icon.png
create sample_sinatra/public/images/hazel_small.png
create sample_sinatra/public/favicon.ico
create sample_sinatra/views
create sample_sinatra/views/layout.erb
create sample_sinatra/views/welcome.erb
create sample_sinatra/sample_sinatra.rb
create sample_sinatra/spec/sample_sinatra_spec.rb
create sample_sinatra/spec/spec_helper.rb
create sample_sinatra/config.ru
create sample_sinatra/Gemfile
create sample_sinatra/Rakefile
create sample_sinatra/README.md
$ cd sampel_sinatra
$ rackup config.ru
Dockerfileをつくる
$ cd sample_sinatra
$ rbdock 2.1.0 --rvm --app .
生成されたDockerfileがそのままでは動かないので修正する。
43行目を削除して44行目に以下を追加
RUN bash -l -c 'rvm use 2.1.0; bundle install'
イメージを作る
$ docker build -t="k2works/sample_sinatra" .
イメージを実行する
$ docker run -d -p 9292:9292 --name=test k2works/sample_sinatra 'rvm use ruby-2.1.0;rackup config.ru'
テスト
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
20f024e69a75 k2works/sample_sinatra:latest bash -l -c 'rvm use 20 minutes ago Up 4 seconds 0.0.0.0:9292->9292/tcp test
$ curl -i $(boot2docker ip 2>/dev/null):9292
HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Content-Length: 1813
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Connection: keep-alive
Server: thin 1.6.2 codename Doc Brown
<!DOCTYPE html>
・・・
かたづけ
$ docker stop test
test
$ docker rm test
test
Docker Hubにプッシュ
docker push
$ docker login
$ docker push k2works/sample_sinatra
Docker Hubと連携
Automated Buildを選択
GitHubを選択
Dockerfileが存在するレポジトリを選択
Dockerfile Locationにはレポジトリ内のDocerfileの場所を指定(ここではsample_sinatra)
公開タイプを選択したらCreate Repositoryする。
上記ではDockerfileのロケーションを間違えていたためビルドに失敗している。
Docerfile Locationを_/sample_sinatra_に修正後Start a Buildを実行してビルドを正常終了させる。
おまけ
他のレポジトリからDcokerfileをつくる。
sinatraにbootstrap実装のレポジトリを使う。
$ mkdir sample_gitrepo
$ cd sample_gitrepo/
$ rbdock 2.0.0-p247 --rvm --app https://github.com/k2works/sinatra_bootstrap
$ docker build -t='k2works/sampel_gitrepo' .
$ docker run -d -p 9292:9292 --name=test_sample_gitrepo k2works/sample_gitrepo 'rvm use 2.0.0-p247;rackup config.ru'
Ruby on RailsプロジェクトのDockerfileをつくる。
$ rails new sample_rails_app
$ cd sample_rails_app
$ rdbock 2.1.0 --rvm --app .
$ docker build -t='k2works/sample_rails_app' .
$ docker run -d -p 3000:3000 --name=test_rails k2works/sample_rails_app 'rvm use ruby-2.1.0;rails server'
注意:Dockerfileは編集する必要あり。
おまけもDocker Hubと連携する
GitHubにおまけを追加プッシュした後に上記の追加をする。