HerokuライクなプライベートなPaaSを作るためのOSS『dokku/dokku - GitHub』の紹介です。
このDokkuの環境は、「Digital Ocean」だと画面から数クリックで作成できるので、
今回は、Digital Oceanとセットで手順を紹介します。
Dukkuを使うメリットは次のとおりです。
- HerokuライクにGitにpushしたら、BuildPack的なものを使ってRailsやNode.js, Pythonなどのアプリケーションを展開できる
- Dokkuは、PosgreSQLやRedis、ElasticSearchなどのプラグインを数コマンドで使える
まだ簡単なアプリケーションをBuildしただけですが、特にハマる伴く安定して使えています!
🏈 Dokkuを使うモチベーション
今回Dokkuを使おうと思ったモチベーションはこちら。
- 趣味アプリでは、できるだけアプリだけに集中したい - PosgreSQLやRedis、ElasticSearchなどのプラグインを数コマンドで使えるようになる - Herokuの無料版の制約を気にせずにアプリ開発したい - 1時間以上アクセスしないとスリープになる - 6時間/1日はスリープ状態にしないといけない - 一定時間以上連続するプロセスがkillされる(はず) - VPSやクラウドだとミドルウェアの環境構築や、デプロイのセッティングに時間がかかる
Herokuはただ乗りフリーライダーの理論ですので、基本ごめんなさいですm(_ _)m
一方で個人の趣味開発は、限られた時間との勝負なのでより効率的な開発手法を模索していて今回
『dokku/dokku - GitHub』を使った方法をトライすることにしました!
🐞 画面からDokkuのDropletを作成
「Digital Ocean」にログインして、Dropletを作成します。
「One-click App」=>「Dokku v0.4.10 on 14.04」を選んでDropletを作成してください。
🐹 ドメインの設定です
自分のDropletを作成して、IP(例 123.123.123.123
) にブラウザでアクセス。
$ open 123.123.123.123 |
以下を登録してください
- 自分のSSHキー - Custom Domain - アプリごとのVirtual Host名の利用(onにしていいかも)
Custom Domainを登録したら、自分のdomain側の設定を修正して、123.123.123.123
を見に行くようにしてください。
apps.yourdomain.com A 123.123.123.123 |
🐡 サーバに入ってpostgresqlのプラグインをインストール
公式チュートリアルにしたがって、『dokku/dokku-postgres - GitHub』をインストールします。
# ssh でサーバにログイン |
ちなみに、Dokkuで使えるPluginの一覧はこちら『dokku/plugins.md - Dokku』。
🍣 日本語環境の設定
language-pack-ja
をインストールして日本語パッケージを入れましょう。
# ssh でサーバにログイン |
🐯 日本時間の設定
$ mv /etc/localtime /etc/localtime.bak |
🗽 改行文字の変換ツールdos2unix
改行文字でよくハマるので、入れておくことをお勧めします。 dos2unix FILE_PATH
とかで改行文字をよしなにしてくれます。
apt-get install dos2unix |
🚕 スワップ領域の設定
安定動作のためにスワップ領域を設定しましょう。
設定のしかたは、拙著『Ubuntu/CentOS サーバのスワップ領域の割り当て』がお勧めです。
🍮 Railsアプリケーションを作成
ローカルに戻ってサンプルのRailsアプリケーションを作成します。
# Railsアプリの作成 |
Rubyのバージョンを指定します。2016/2/25時点では 2.2.3
まで対応しているようです。
# Gemfile |
# .ruby-version |
routesにrootを追加します。
# config/routes.rb |
.gitignore
から config/secrets.yml
を削除。そして、Gitにコミット。
# gitに登録 |
🎃 ローカルからの実行系
ローカルでのコマンド入力を簡単にしてくれる
「SebastianSzturo/dokku-cli」
を使5つデプロイします!
# gitの情報を読んで、herokutoolbelt |
Railsで作成した画面が表示されれば成功です!
🍄 dokku-cliのコマンド
以下のようなことができます。
# アプリ配下でコマンドを実行 |
😀 DokkuのミドルウェアPlugin
PostgreSQLだけでなく、RedisやElasticsearch等のPluginも数コマンドで使うことができます。
公式サポートされているものだけでも次のようなものがあります。
CouchDB (beta) |
また公式サポートされているPlugin以外にもコミュニティや個人がさまざまなPluginを提供しています。
詳しくは、『dokku/plugins.md - GitHub**』を見てみてください。
🎉 Redisのインストール
Dokku PluginとしてRedisを入れてみました!
# ssh でサーバにログイン |
これで、アプリケーション側のconfigに以下が設定されます。
REDIS_URL: redis://dokku-redis-dokku_sample_redis:6379/0
上記のサービスを使えば、RailsのアプリケーションからRedisが使えます!
🤔 感想
まだ、簡単なアプリケーションをデプロイしただけですので、もう少しいろいろ試した上ですが、今のところの感触はかなりありな気がします^^
👽 Special Thank
- Dokku - The smallest PaaS implementation you’ve ever seen
- Setting up Dokku on Digital Ocean
- Bye Bye Heroku, Hello Dokku: Migrating a Rails App from Heroku to Dokku (Part 1) | by @donpottinger
- Bye Bye Heroku, Hello Dokku: Migrating a Rails App from Heroku to Dokku (Part 2) | by @donpottinger
- Deploy your Rails applications like a pro with Dokku and DigialOcean | Ruby Fleebie
- 【メモ】UbuntuをUTC⇒JSTへ - 気の向くままに書き綴る
🚜 変更来歴
(2016/01/24 19:30) Redisの設定方法を追記
(2016/05/01 13:25) 日本時間の設定方法