LoginSignup
12
14

More than 5 years have passed since last update.

Arukasで初めてのDocker + Sinatraアプリケーションをデプロイした話

Last updated at Posted at 2016-05-05

覚え書きというか日記的な感じ!٩(๑❛ᴗ❛๑)۶

どういうわけか?

みんな大好き、さくらちゃんがDockerホスティングサービス(のオープンβテスト)を始めていました。

最近はナウくてイケイケなWeb屋さんはDockerで本番デプロイだぜ〜みたいな感じですが、
僕は全然Dockerをドカドカ使えていないため、この機会に挑戦してみようと思いました。
ゴールデンウィークだしね!

やったこと

1. アプリをつくる

Dockerだからといって特別なことは特にしなくても大丈夫でした。
ローカルにファイルを作ったりするようなコードを書いてしまうと消えちゃうのでまずいですが、そもそもそんなアプリはHerokuにもデプロイできないので書かないから大丈夫です٩(๑❛ᴗ❛๑)۶
Herokuのときと同じつもりでアプリをつくります。

また、Herokuではないですが、 Procfile を作成してforemanで起動できるようにしておくと何かと便利です。

2. アプリを含んだDockerイメージを作るリポジトリをGitHubにつくる

Arukasは現時点(2016-05-05)ではDockerHubの公開イメージしかデプロイできないみたいです。オープンβテストだしね。
なので、DockerHubに公開するためのイメージを作成するためのリポジトリを作成します。

イメージを作成するDockerfileはこんな感じ。

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
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でアプリを作成、公開する

Arukasの様子です

先ほどつくったイメージを指定してアプリを追加します。
インスタンス数とかも増やせるようですが、今回はアプリの性質上1つにします。

エンドポイント名を指定すれば 好きな文字列.arukascloud.io で公開できます。
独自ドメインも設定できるようになるといいな :pray:

また、ENVも設定できますが20個までしか設定できないようです。
僕はアプリを作っているとENVの設定項目を増やしすぎるクセがあるので、この辺りは気をつけていきたいですね……

アプリケーションの作成後に起動ボタンを押して1分くらい待つとデプロイ完了ですよ!

感想

  • よかった
    • はじめてのDockerデプロイだったけど、Herokuみたいな環境になれていればあんまり違和感ない
    • 手元でイメージが動くか確認してからデプロイできるのはすごく便利
    • DockerHubも思ってたような怖い場所ではなかった
  • わからん
    • アプリを更新したときのイメージ更新はどうしたらいいんだろう?
    • Arukasでイメージ更新したいときどうしたらいいんだろう?
      • 今は「停止!」→「起動!」を超高速クリックしています(※1〜2分くらいサービスが死ぬ)

Docker、前に環境構築でつまづいたことがあってニガテイメージが結構あったのですが、最近はMacへのインストールも簡単だし、もうちょっといろいろ使ってあげたい気になりました。
がんばるぞい!

おまけ:本日デプロイしたもの

2年くらい前に作ったサービスの作り直し版です。
Twitterで延々に「がんばるぞい」なツイートを検索して、日々の「ぞい数」を表示します。
以前つくったものは数字がカウントアップするだけだったので、
今回は、某動画サービスみたいにツイートが画面を流れるようにしてみました٩(๑❛ᴗ❛๑)۶

9月までArukasのβテストやってるみたいだし、アニメ放送中はだいじょうぶだよね…?

12
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14