TECH
[CloudGarage]

Dokkuを使ってインスタンスをHerokuのように運用する

TECH
中津川 篤司

CloudGarageはあらかじめリソースを契約し、その範囲内で自分の好きな形でインスタンスを立ち上げられます。インスタンスの割り当てはCPU1つ、ストレージ50GBといった単位になりますが、もっと細かくても良いと考える人もいるでしょう。

そういった目的においてぴったりなのがDockerです。そしてDockerをHeroku風に、サブドメイン化でアプリケーションを運用できるのがDokkuになります。今回はこのDokkuの使い方を解説します。今回はUbuntu 16.04 LTSを対象としています。

dokku/dokku: A docker-powered PaaS that helps you build and manage the lifecycle of applications

ドメインを割り当てる

DokkuはIPアドレスベースでも運用できるようですが、サブドメインを使った方が分かりやすいでしょう。ドメイン事業者のDNS設定で、ネイキッドドメイン(example.comのような形)とすべてのサブドメイン(www.example.com や sub.example.comなど)が同じIPアドレス(CloudGarageのIPアドレス)を向くように設定します。

サーバのhostnameを変更する

Dokkuのインストール時にはドメイン名をhostnameとして設定しておく必要があります。Ubuntu 16.04 LTSのhostname変更は以下のコマンドになります。example.comはあなたのドメインに読み替えてください。

sudo hostnamectl set-hostname example.com

そして/etc/hostsにドメインを追加します。

127.0.0.1 localhost
127.0.0.1 example.com

インストールする

Dokkuのインストールは公式に用意されているコマンドを実行するだけです。

wget https://raw.githubusercontent.com/dokku/dokku/v0.12.12/bootstrap.sh;
sudo DOKKU_TAG=v0.12.12 bash bootstrap.sh

時間はかかりますが、待っていれば完了します。

設定する

設定はWebブラウザで行います。 http://example.com:2000/ のように2000番ポートでサーバが立ち上がります。そのため、ファイアウォールの設定を変更する必要があります。例えば ufw を使っている場合には以下のコマンドを実行します。

sudo ufw allow 2000

こちらがインストール設定画面です。公開鍵の設定と、サブドメインでの運用を有効にします。

試す

では試してみます。まずDokku側でアプリケーションが必要です。

サーバ側

dokku apps:create ruby-rails-sample

さらにデータベースを使いますのでPostgreSQLをインストールします。

sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git

そして作成したアプリケーション用にデータベースを作成します。

dokku postgres:create rails-database

この作成したデータベースとアプリケーションをリンクさせます。

dokku postgres:link rails-database ruby-rails-sample

ローカルコンピュータ側

では次にローカルコンピュータでの操作です。ローカルコンピュータでは、ベースになるRailsアプリケーションをクローンします。

git clone git@github.com:heroku/ruby-rails-sample.git

そしてremoteを追加します。example.comはあなたのドメインに読み替えてください。

cd ruby-rails-sample
git remote add dokku dokku@example.com:ruby-rails-sample

そしてpushします。

git push dokku master

デプロイ

デプロイはDockerのビルドやRubygemsのインストールなどもあって、時間がかかります。

$ git push dokku master
Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (9/9), 1015 bytes | 1015.00 KiB/s, done.
Total 9 (delta 4), reused 0 (delta 0)
-----> Cleaning up...
         :
-----> Installing dependencies using bundler 1.15.2
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
       Fetching gem metadata from https://rubygems.org/..........
       Fetching version metadata from https://rubygems.org/..
       Fetching dependency metadata from https://rubygems.org/.
       Using rake 10.4.2
         :
       Using turbolinks 2.5.3
       Bundle complete! 13 Gemfile dependencies, 53 gems now installed.
         :
=====> Application deployed:
       http://ruby-rails-sample.example.com

To ssh://example.com/ruby-rails-sample
   aef96a0..29aeb60  master -> master

アプリケーション名がサブドメインになり、アプリケーションが立ち上がります。


サブドメインを使ってアプリケーションが立ち上げられる手軽さと、Dockerによる自由度の高さが魅力となっています。一度Dokkuを立ち上げてしまえば、簡単に作ったり捨てたりできる便利な開発環境が手に入るでしょう。

CloudGarageの場合、途中からリソースを変更することもできます。大きなリソースを一台に割り当てて、Dokkuで分割、運用するというのも良さそうです。

Dokku – The smallest PaaS implementation you've ever seen

この記事を書いた人

中津川 篤司

株式会社MOONGIFT 代表取締役。CloudGarage、ニフクラ mobile backend、hifive エバンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。2004年、まだ情報が少なかったオープンソースソフトの技術ブログ『MOONGIFT』を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶエバンジェリスト業「DevRel」活動をスタートした。 Twitter:@goofmint | GitHub:@goofmint | Facebook: goofmint

この記事のタグ

オススメの記事

ページトップへ