狠狠撸

狠狠撸Share a Scribd company logo
Docker compose selenium-grid_tottoruby_25
自己紹介
ほきもと まさゆき(30歳)
リコーITソリューションズ(株) (8年目)
Twitter : @oh_rusty_nail
docker歴 : 6か月
発表内容は初心者向け(10minくらい)
発表までの学習時間は2週間くらい
とっとるびーで発表するのは第12回
(2013/05)ぶり
自己紹介
はじめに
Docker compose selenium-grid_tottoruby_25
インストール
http://qiita.com/taroshin/items/22bb360b18a0a24871dd
その書き方対応してません!
と早速怒られた
诲辞肠办别谤-肠辞尘辫辞蝉别とは
诲辞肠办别谤-肠辞尘辫辞蝉别とは
$ docker run …
mysql
$ docker run …
nginx
$ docker run …
app
$ docker run …
redis
诲辞肠办别谤-肠辞尘辫辞蝉别とは
$ docker-compose up
诲辞肠办别谤-肠辞尘辫辞蝉别とは
?複数のコンテナをコード(docker-compose.yml)で管理する
?コンテナの同時起動/停止
?コンテナのスケール
docker-compose.yml
http://docs.docker.jp/compose/overview.html
http://docs.docker.jp/compose/compose-file.html (リファレンス)
docker-compose コマンド
$ docker-compose up
container
Ex) $ docker-compose up [ -d ]
docker hub
Dockerfile
build
pull
container
image
network
$ docker-compose build
container
image
Dockerfile
Ex) $ docker-compose build
build
$ docker-compose create
container
docker hub
Ex) ($ docker network create --driver bridge xxx_default)
container
image
Dockerfile
build
pull
ネットワークが構築されていないとコンテナは作られない
作られたコンテナは起動していない
$ docker-compose create
network
$ docker-compose start
container
START
Ex) $ docker-compose start
停止されたコンテナを起動する
新しいコンテナは作られない
docker hub
container
image
Dockerfile
build
pull
network
$ docker-compose stop
container
STOP
Ex) $ docker-compose stop
docker hub
Dockerfile
build
pull
container
image
network
$ docker-compose rm
container
Ex) $ docker-compose rm
docker hub
Dockerfile
build
pull
container
image
コンテナが停止されていないと
コンテナは削除できない
network
$ docker-compose down
container
(--rmi all オプション)
STOP
Ex) $ docker-compose down [ --rmi all ]
docker hub
Dockerfile
build
pull
container
image
network
$ docker-compose run
container
Ex) $ docker-compose run web rails s
docker hub
Dockerfile
build
pull
container
image
実際には $ docker run –ti
を処理している
network
$ docker-compose scale
container
container
container
Ex) $ docker-compose scale web=3
docker hub
Dockerfile
build
pull
container
image
network
诲辞肠办别谤-肠辞尘辫辞蝉别を使ってみる
今回やってみたこと
E2Eの自動テストを行うための環境数分で構築してみる
https://github.com/RustyNail/selenium_grid_docker-compose
docker-compose Selenium Grid
×
Selenium Gridとは
? 複数のSeleniumの実行環境を管理し、並列にテストを実行できるツール
? 1つのテストスクリプトを複数環境に対して並行して実行できる
? テストの実行時間を大幅に短縮することが可能
? Selenium Gridの構成
? Hub ??? テストスクリプトを受け付けるサーバー
? Node ??? 実際にテストを実行する環境
コンテナの構成
? 以下4つのコンテナで構成する
? hub (Selenium Grid)
? node_firefox (Firefoxのノード)
? node_chrome (Chromeのノード)
? test (Seleniumでスクショをとるスクリプト)
docker-compose.yml Dockerfile
screenshot.rb
wait-for-it.sh
$ docker-compose up
$ docker-compose run
Selenium Grid
$ bundle exec ruby screenshot.rb
? スクリーションショットが撮れている
? (日本語フォントをいれていないのでトウフになっている)
$ docker-compose scale
$ docker-compose scale
? 指定した台数に増加
? 並列実行環境を構築できる
Docker compose selenium-grid_tottoruby_25
linksとdepends_on 似てる?
? version 1とversion 2で違いがあった。以下はversion 1の場合
? depends_on
? コンテナの作成順序と依存関係を決めるもの
? links
? depends_onの機能に加えて、[エイリアス名](または[サービス名])を使用してコンテナに
アクセスできるようにする
? links
? 他のサービスをコンテナにリンクさせる
? サービス名に別名をつける場合はservice:aliasの形式で指定する
? 別名を省略した場合は、サービス名がそのまま別名として使われる
? version 1:他のコンテナからサービス名を使って接続することができなかった
? linksで紐付けする必要があった
? version 2:composeファイルに書いた全てのサービス間に自動的にリンクを張る仕様になった
? linksとわざわざ書く必要がなくなった
linksとdepends_on 似てる?
? depends_on
? コンテナを立ち上げる順番を決める
? コンテナが起動する順番を指定しても、起動完了まで待ってくれない
? 接続したいデータベースが準備できていないのに、先にWEBアプリが立ち上がるという問題も起こりうる
linksとdepends_on 似てる?
はまったこと ~linksに書いても/etc/hostsに反映されない~
? 名前解決をさせたい
? ググルとlinksに書くと/etc/hostsに反映されるという記事が結構ある
? linksに書いたが、/etc/hostsを見ても書き込まれない???
? バージョンが古い(1.4系)とその現象が起きたという記事はあった
? けど、今のバージョンは1.11.2(最新)
はまったこと ~linksに書いても/etc/hostsに反映されない~
https://github.com/docker/compose/issues/2841
https://blog.docker.com/2016/02/docker-1-10/
名前解決のためのDNSサーバ:ホスト名の検索は、 /etc/hostsではなくDNSサーバで行われるため、
より信頼性とスケーラビリティが向上します。
http://docs.docker.jp/engine/userguide/networking/configure-dns.html
? docker network inspect
[ネットワーク名]
結論
? port is already allocatedと言われる
? コンテナの削除やdockerの再起動をしたがダメだった
はまったこと2 ~dockerでゾンビ化したポートを開放する~
はまったこと2 ~dockerでゾンビ化したポートを開放する~
? コンテナの利用していたポートを掴んだまま
終了して、コンテナ再起動時にエラーになる
ことがあるらしい
? 通常はdockerの再起動でポートが解放される
? ファイルを削除 & docker再起動で解決! ?
https://unicorn.limited/jp/item/707
おわりに
まとめ
? docker / docker-compose お手軽!すごい便利!
? 基本docker-compose up でいい感じにできるけど、リファレンスをちゃんとみたほうがいい
? まず、docker hubにないか探してみるべし
http://qiita.com/ootaken/items/26d37cb34d3b575277e0
Docker compose selenium-grid_tottoruby_25

More Related Content

Docker compose selenium-grid_tottoruby_25