本稿で行うこと。
Windows に Deis Workflow CLI をインストールし,
SourceTree を用いて認証用の鍵を作成し登録したあとの作業は,Webアプリのデプロイです。
やってみましょう。
外部の Git リポジトリとしては GitHub が一般的です。
しかし,零細規模では,プライベートリポジトリを無料で複数持てる Bitbucket を用いる例が多いのではと思いますので,そちらで例示します。
本稿では,作業者が下記のような状態にあることを想定します。
- Bitbucket には既にプロジェクトと Git リポジトリが存在している。
- 既に誰かが Web アプリのソースコードを Bitbocket の Git リポジトリに登録している。
- さきほど上記プロジェクトに参加したばかり。
- Git の使い方は知っている。
- 使用する端末は Windows 系。
- Workflow CLI と SourceTree はインストール済み。
-
deis.exe register
およびdeis.exe login
を実行済み。
作業
順番に説明します。
Bitbucket への接続
Web検索をかけてみたらとても良いブログエントリがありました。
先日,筆者が書いた記事よりも内容が濃く解りやすいと思います。
Deis へのデプロイのための設定
SourceTree から clone したリポジトリを選択した状態で「端末」ボタンを押し,コマンドラインウインドウを開きます。
開いたら deis.exe
コマンドを実行するのですが,デプロイするWebアプリが Deis 上に存在するかどうかで,オプションが異なります。
いずれにせよ,deis.exe
は内部で git remote:add
を呼び出し,設定します。
新しく Web アプリを生成する場合
deis.exe create {アプリ名}
{アプリ名}
は省略可能です。省略した場合には適当な名前が割り当てられます。
既にデプロイ済みの Web アプリを更新する場合
deis.exe remote:add -a {アプリ名}
アプリ名は省略できません。
デプロイ
Deis は Heroku 互換ですので,git push
でデプロイのためのビルドが開始されます。
コマンドラインの場合は,git push deis master
でプッシュします。
SourceTree の場合,下記の手順となります。
- 「プッシュ」ボタンを押してプッシュウインドウを表示させる。
- プッシュ先リポジトリを
deis
にする。 - プッシュ対象のブランチを
master
にする。 -
OK
ボタンを押す。
デプロイが拒絶されたら?
稀にデプロイが拒絶される場合があります。
初回での場合 deis.exe keys:add
の設定ミスも疑われますが,
Deis のバグや過負荷と思われる拒絶も稀に起きるようです。
設定ミスの可能性は無い,という自信がある場合は,サーバ管理者に問い合わせましょう。
確認
デプロイされた Web アプリは,http://{アプリ名}.{Deis のベースドメイン名}/
でアクセス可能となります。
Deis のベースドメイン名とは,ログインの時に指定した URL の http://deis.{ここの部分のことです}/
。
Web ブラウザからのアクセスで 5xx エラーが返ってくるときは?
Deis は,Kubernetes を実行環境の基盤としています。
背後では下記のようなタスクが走ります。
このため,複数ノードの環境では,ビルド完了からデプロイ完了まで時間がかかることがあります。
- Deis builder がデプロイ終了時に Docker リポジトリにコンテナイメージを push。
- その後 Kubernetes が Docker リポジトリからコンテナイメージを pull。
- Kubernetes Pod として実行。
デプロイ完了後に deis.exe ps
を実行すると,アプリを受け持っているコンテナの状態がわかります。
up
になっているのが正常です。
502 エラーが返ってきて image pulling
の場合は,しばらく待ってみてください。
それ以外の状態になっている場合には…,おそらく,デプロイした Web アプリにバグがあるか,Deis や Kubernetes がトラブっています。
後者の場合はサーバ管理者に問い合わせましょう。
まとめ
以上,文章にすると煩雑ですが,慣れるとルーチンワークです。ご参考になれば幸いです。