何かメモリたいブログ

何かメモリたい

さくらVPSでdokkuを使おうと思った時に詰まった点

さくらVPS(Ubuntu16.04)でdokkuを動かしたかったけど詰まったのでメモ。

インストール方法
Dokku - The smallest PaaS implementation you've ever seen

インストール出来たのにブラウザからアクセスできない!などの問題は下記の記事で全て解決します(ありがたい)
さくらVPSubuntuは、デフォルトでiptablesの80番開いてないみたいなので開きます。
qiita.com

ブラウザから設定が済むとサンプルアプリのデプロイドキュメントが開きます。
Dokku - The smallest PaaS implementation you've ever seen
これもドキュメント通りに進めれば大体大丈夫です。

順番的に先にdokku側でDBの設定とかを行ってからローカルのアプリをデプロイするので、途中下記のようなメッセージが出ますが無視して大丈夫。

$ dokku postgres:link rails-database ruby-rails-sample
-----> Setting config vars
       DATABASE_URL:  postgres://postgres:c235e4e1378e5d38ef9fd4824902f510@dokku-postgres-rails-database:5432/rails_database
-----> Restarting app ruby-rails-sample
App ruby-rails-sample has not been deployed
$

ローカルマシーンでgit remote add dokku dokku@dokku.me:ruby-rails-sampleを打つ所が出てきますが、これは自分のドメインに変更します。
例えばexample.comのような自作ドメインを取得していたら
git remote add dokku dokku@example.com:ruby-rails-sample
とかになります。
独自ドメイン取ってない場合はgit remote add dokku dokku@<ipアドレス>:ruby-rails-sampleとかになるのかな(試してないので不明)

あと、git push dokku masterを打つと! [remote rejected] master -> master (pre-receive hook declined)みたいなエラーが最初出ました(詳細なログは消えた…)
pre-receive hook declined · Issue #501 · dokku/dokku · GitHub
上記を参考にubuntu側で下記のコマンドを打ちます。

$ sudo wget -O /etc/init/docker.conf https://raw.github.com/dotcloud/docker/master/contrib/init/upstart/docker.conf
$ sudo service docker restart

多分Dockerfileをダウンロードして、その設定を反映させて…みたいな事をやってると思われます。
Dockerほとんど使ってないので下手なことは言えない…。

これで無事git push dokku masterが通るようになりました!
後はログの最後あたりに表示されるhttp://ruby-rails-sample.<ドメイン名>みたいなアドレスにアクセスすれば…!!
f:id:domwp:20180403043425p:plain
はい。

とりあえずubuntu側でdokkuのログを見ます。

$ dokku logs ruby-rails-sample
...
...
...
2018-04-02T19:20:50.998966458Z app[web.1]: ActiveRecord::NoDatabaseError (FATAL:  database "rails_database" does not exist
2018-04-02T19:20:50.999055653Z app[web.1]: ):
...
...
...
$

何やらrails_databaseが無いよ!みたいなエラーに見えます。
そういえばサンプルアプリのデプロイドキュメントで一回DB作成に失敗したような気がしてました。

$ dokku postgres:create rails-database
       Waiting for container to be ready
  ERROR: unable to connect
$ dokku postgres:create rails-database
Postgres service rails-database already exists

というわけで下記を参考にDBを作り直します。
DBの削除はdokku postgres:destroy <DB名>みたいですね!
GitHub - dokku/dokku-postgres: BETA: a postgres plugin for dokku

$ dokku postgres:destroy rails-database
Cannot delete linked service

はい。
一旦アプリとDBのリンクを外します。

$ dokku postgres:unlink rails-database ruby-rails-sample
...
...
...
...
=====> Application deployed:

$

dokku postgres:destroy <DB名>をする時は確認のため<DB名>を求められるので入力します。

$ dokku postgres:destroy rails-database

 !     WARNING: Potentially Destructive Action
 !     This command will destroy rails-database Postgres service.
 !     To proceed, type "rails-database"

> rails-database
-----> Deleting rails-database
       Deleting container data
-----> Stopping container
=====> Container stopped
       Removing container
       Removing data
=====> Postgres container deleted: rails-database
$

再度DBを作成します。

$ dokku postgres:create rails-database
       Waiting for container to be ready
       Creating container database
       Securing connection to database
=====> Postgres container created: rails-database
=====> Container Information
       Config dir:          /var/lib/dokku/services/postgres/rails-database/config
       Data dir:            /var/lib/dokku/services/postgres/rails-database/data
       Dsn:                 postgres://postgres:41a32887830a6fe5932a9aac47e9dc43@dokku-postgres-rails-database:5432/rails_database
       Exposed ports:       -                        
       Id:                  8fba0ce1f2b92d38a1b92b29b589d1bbc76cf1eab1ec37c3960bd44ccf13e347
       Internal ip:         172.17.0.2               
       Links:               -                        
       Service root:        /var/lib/dokku/services/postgres/rails-database
       Status:              running                  
       Version:             postgres:10.2      
$

あ、完全に見たこと無い実行結果が出ました。
何か無事にDBが作成されているような感じがします。

再度DBをアプリにリンクします。

$ dokku postgres:link rails-database ruby-rails-sample
...
...
...
=====> Application deployed:
$

f:id:domwp:20180403052122p:plain

|aa|  |  (^o^)ノ | < おやすみー  |\⌒⌒⌒ \   \|⌒⌒⌒⌒|      ̄ ̄ ̄ ̄ ||<

あれはてなブログってアスキーアート使えないんだ。
Markdownだからかな。。。