Rabbit Slide Show

ヽ(´・肉・`)ノログとDocker

2015-07-10

Description

[Infrastructure as Code Casual 札幌 #0](http://infracode-sapporo.connpass.com/event/16476/)で発表した資料

Text

Page: 1

ヽ(´・⾁・`)
ノログとDocker

Page: 2

タイトルずれました
                            
                 
                    
   
   
               
            
   
                
            

Page: 3

自⼰紹介
にく
I like
コンサドーレ札幌
Emacs
Ruby
Elixir/Phoenix

Page: 4

自⼰紹介
github̲id :: niku
twitter̲id :: niku̲name
web :: http://niku.name/

Page: 5

今⽇話すこと
http://niku.name/
どうやって表⽰しているか
どうやってコンテンツ更新しているか

Page: 6

どうやって表⽰しているか
                                                                     
Apache Webサーバー
Rack サーバーとアプリケーショ
ンを繋ぐミドルウェア
nwiki git のファイルの内容を 
web に表⽰する
nikulog コンテンツ(git管理)

Page: 7

つらみ
アプリケーション開発者にとっ
ての趣味サーバー管理
サーバー管理者にとっての趣味
アプリケーション開発(?)
「これ,どうやるんだったっ
け……」

Page: 8

つらみ
知識としてはある
たまにしかやらないので毎回調
べるはめになる
[apache 設定 やり⽅] [検索]

Page: 9

つらみ対策
プロビジョニングツール
chef / itamae レシピ書けます
いいものだ
(僕は)サーバー管理の⼿数を減ら
したい
選定や知識のアップグレードの
時間を投資し続けることができ
るだろうか?

Page: 10

つらみ対策
わかれていると管理しやすいので
は
ミニマム構成のサーバー部分
⽳が少ない
気軽にアップデートでき,動作
検証しやすいアプリケーション

Page: 11

つらみ対策
ミニマム構成のサーバー => 
Docker だけインストールした 
Debian
気軽にアップデートでき,動作
検証しやすいアプリケーション 
=> Dockerイメージ

Page: 12

Dockerイメージを載せるサ
ーバー
さくらVPSにDebian8をインスト
ールして,コマンドを⼿で打ちま
した
                                 
                                                                                
                                                
                     
                                   

Page: 13

Docker
                                                                     

Page: 14

Docker
                                                                     
                                                                   
                                                                                

Page: 15

niku/debian
PackerでOSイメージを自分で
作る⽅法を知っていた
Packerを使ってVagrantのBox
を作る⽅法を⼀つずつ説明する 
- ヽ(´・⾁・`)ノログ
(URL⻑くて⼊らなかった)

Page: 16

niku/debian
OS イメージ作成,サーバー起動,
サーバーログイン
                                           
                               
                                                     
                                     
                                      

Page: 17

niku/debian
Debianサーバー内でDockerイメ
ージ⽣成,DockerHubへpush
          
                                                              
                                                         
                         
   
                                                                                                     
                     
                                                   
                                                
                                  
                    
                   
                               
                                      
                 
                                                                                                     
                              

Page: 18

niku/nwiki
AutomatedBuild
Github リポジトリを更新
Github から Dockerhub へ 
Webhook でおしらせ
Dockerhub が Dockerfile を元
に Docker イメージをビルド

Page: 19

niku/nwiki
やりかた
Dockerfile のある github リポジ
トリを Dockerhub に 
AutomatedBuild で登録

Page: 20

niku/nwiki
やりかた
github の webhook に 
Dockerhub を指定

Page: 21

niku/nwiki
nwiki/Dockerfile
                
               
                       
                                        
                 
           
                
         
             
                                 
                                                                     
                              
                       
                                                                   
                                                              
             
                                                

Page: 22

niku/nikulog
同様にAutomatedBuildを利用

Page: 23

niku/nikulog
nikulog/Dockerfile
               
               
                                                                   
                            
                            
                            
                  
                                       
                                                      
                                      
                                          

Page: 24

サーバーとイメージ準備完了
                                      
                                                                
で表⽰できるようになった (^o^)/

Page: 25

niku.name 更新のしくみ
更新は? ∑(゚□゚;)

Page: 26

niku.name 更新のしくみ
Docker導⼊以前
   
  
       
  
             
  
                
  
                     

Page: 27

niku.name 更新のしくみ
参考にした
DockerHubのAutomated 
Buildsをフックして最新の
Dockerコンテナをデプロイす
る | SOTA
http://deeeet.com/
writing/2015/01/08/
dockerhub-hook/

Page: 28

niku.name 更新のしくみ
Docker導⼊後
   
  
       
  
                     
  
                 
  
                        
  
                             
                    
  
                
  
                      
  
                      

Page: 29

niku.name 更新待受

Page: 30

niku.name 更新待受
Webhook待受サーバー
bketelsen/captainhook
https://github.com/
bketelsen/captainhook
HTTPリクエストがくると設定し
たjsonのとおりにコマンドを実
⾏する

Page: 31

niku.name 更新待受
サーバーに追加でアプリケーショ
ンを⼊れたくない
niku/yobirinex
https://github.com/niku/
yobirinex
実⾏環境(ErlangVM)も同梱でき
るのでtarファイル展開した以下
で完結する

Page: 32

niku.name 更新待受
ErlangVM同梱HTTPサーバーの作
りかた
ElixirでHTTPのやりとりをする
http://niku.name/
articles/2015/07/03/Elixir%
E3%81%A7HTTP%E3%81%
AE%E3%82%84%E3%82%8A
%E3%81%A8%E3%82%8A%

Page: 33

niku.name 更新待受
更新用設定ファイル
                                    
 
                
         
                              
                                                             
          
         
                              
                                                 
          
         
                              
                                               
          
         
                              
                                                                                                      
         
     
 

Page: 34

niku.name 更新待受
   
 
      
 
                     
 
                
 
         
 
                            
                   
 
                
 
                     
 
                      
 
  
 
 
 
  
 
 
  
  
 
 
  
 
 
 
 

Page: 35

その他/話せなかったこと1
Dockerhub のビルド遅くて数分
から⼗数分待つことがある.急
いでないので別に問題にしてい
ない
Webhook⾶んでこないことあ
る.Dockerhubならwebから⼿
動でビルド,niku.nameならロ
ーカルからcurlでリクエストし
てる

Page: 36

その他/話せなかったこと2
docker-compose使ってない.
Vagrant の docker プロビジョ
ンでまだ対応していない
Vagrant から Docker を使った
ときの docker exec デバッグの
やりかたを書きたかったけど時
間なかった
Packerでイメージつくるときの
DEBCONF̲DEBUG=5の有用さ

Page: 37

まとめ
niku.nameの表⽰
Dockerイメージ
niku.nameの更新
GithubのWebhook
DockerHubのAutomatedBuild
DockerHubのWebhook
独自Webhook待受サーバー

Other slides