覚え書きというか日記的な感じ!٩(๑❛ᴗ❛๑)۶
どういうわけか?
みんな大好き、さくらちゃんがDockerホスティングサービス(のオープンβテスト)を始めていました。
最近はナウくてイケイケなWeb屋さんはDockerで本番デプロイだぜ〜みたいな感じですが、
僕は全然Dockerをドカドカ使えていないため、この機会に挑戦してみようと思いました。
ゴールデンウィークだしね!
やったこと
1. アプリをつくる
Dockerだからといって特別なことは特にしなくても大丈夫でした。
ローカルにファイルを作ったりするようなコードを書いてしまうと消えちゃうのでまずいですが、そもそもそんなアプリはHerokuにもデプロイできないので書かないから大丈夫です٩(๑❛ᴗ❛๑)۶
Herokuのときと同じつもりでアプリをつくります。
また、Herokuではないですが、 Procfile
を作成してforemanで起動できるようにしておくと何かと便利です。
2. アプリを含んだDockerイメージを作るリポジトリをGitHubにつくる
Arukasは現時点(2016-05-05)ではDockerHubの公開イメージしかデプロイできないみたいです。オープンβテストだしね。
なので、DockerHubに公開するためのイメージを作成するためのリポジトリを作成します。
イメージを作成するDockerfileはこんな感じ。
FROM ruby:2.3.1
RUN apt-get update && apt-get -y install git build-essential
RUN cd /usr/local && \
git clone git://github.com/creationix/nvm.git nvm && \
. /usr/local/nvm/nvm.sh && \
nvm install 6.0.0 && nvm alias default 6.0.0
RUN gem install bundler --no-document
RUN cd ~ && git clone https://github.com/rutan/zoint2.git
RUN cd ~/zoint2 && \
. /usr/local/nvm/nvm.sh && npm install --unsafe-perm && \
bundle install -j4
COPY start.sh /start.sh
CMD ./start.sh
#!/bin/bash
cd ~/zoint2
bundle exec foreman start
フツーのSinatraアプリだったらnodeとかいらないので、もうちょっとシンプルにできそうですね…
CSSとJSをwebpackでビルドしたいので頑張って入れています。
3. DockerfileのリポジトリをDockerHubとリンクする
僕はてっきり自分でビルドしてDockerHubにpushしないといけないものだと思っていたのですが、DockerHubはGitHubのリポジトリから自動的にイメージをビルドする機能があるとのこと。
べんり〜。
ということで、さっき作ったリポジトリを結びつけるとイメージが公開されます。
「ビルド始まらないんだけど!」となったらDockerHubの Build Settings
ページに行くと手動で実行できます。
4. Arukasでアプリを作成、公開する
先ほどつくったイメージを指定してアプリを追加します。
インスタンス数とかも増やせるようですが、今回はアプリの性質上1つにします。
エンドポイント名を指定すれば 好きな文字列.arukascloud.io
で公開できます。
独自ドメインも設定できるようになるといいな
また、ENVも設定できますが20個までしか設定できないようです。
僕はアプリを作っているとENVの設定項目を増やしすぎるクセがあるので、この辺りは気をつけていきたいですね……
アプリケーションの作成後に起動ボタンを押して1分くらい待つとデプロイ完了ですよ!
感想
- よかった
- はじめてのDockerデプロイだったけど、Herokuみたいな環境になれていればあんまり違和感ない
- 手元でイメージが動くか確認してからデプロイできるのはすごく便利
- DockerHubも思ってたような怖い場所ではなかった
- わからん
- アプリを更新したときのイメージ更新はどうしたらいいんだろう?
- commit IDを書き換える みたいなことをしてるんだけど、もっといい方法ないかな…
- Arukasでイメージ更新したいときどうしたらいいんだろう?
- 今は「停止!」→「起動!」を超高速クリックしています(※1〜2分くらいサービスが死ぬ)
- アプリを更新したときのイメージ更新はどうしたらいいんだろう?
Docker、前に環境構築でつまづいたことがあってニガテイメージが結構あったのですが、最近はMacへのインストールも簡単だし、もうちょっといろいろ使ってあげたい気になりました。
がんばるぞい!
おまけ:本日デプロイしたもの
2年くらい前に作ったサービスの作り直し版です。
Twitterで延々に「がんばるぞい」なツイートを検索して、日々の「ぞい数」を表示します。
以前つくったものは数字がカウントアップするだけだったので、
今回は、某動画サービスみたいにツイートが画面を流れるようにしてみました٩(๑❛ᴗ❛๑)۶
9月までArukasのβテストやってるみたいだし、アニメ放送中はだいじょうぶだよね…?