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