さくらVPSでdokkuを使おうと思った時に詰まった点
さくらVPS(Ubuntu16.04)でdokkuを動かしたかったけど詰まったのでメモ。
インストール方法
Dokku - The smallest PaaS implementation you've ever seen
インストール出来たのにブラウザからアクセスできない!などの問題は下記の記事で全て解決します(ありがたい)
さくらVPSのubuntu
は、デフォルトで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.<ドメイン名>
みたいなアドレスにアクセスすれば…!!
はい。
とりあえず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:
$
|aa| | (^o^)ノ | < おやすみー |\⌒⌒⌒ \ \|⌒⌒⌒⌒|  ̄ ̄ ̄ ̄ ||<