🛝
KamalでデプロイしたRailsとPosgreSQLのアプリでデータベース管理
RailsとPosgreSQLで構成されるアプリをKamalでデプロイしました。
PostgreSQLのデータベース管理をしていきます。
rake db コマンドの実行
rakeコマンドでデータベースを管理する際には以下のように実行します。
kamal app exec -i 'bundle exec rake db:seed'
ただし、RailsアプリがPostgreSQLに接続している状態なので、以下のようなrake db:migrate:resetは実行することができません。
kamal app exec -i 'bundle exec rake db:migrate:reset DISABLE_DATABASE_ENVIRONMENT_CHECK=1'
psqlでデータベースに接続
シェルにログインします。この場合のログイン先はRailsアプリが稼働しているコンテナです。
kamal app exec -i --reuse "bash"
psqlでPostgreSQLに接続します。
psql -U dbuser -d appname_production -h appname-db
ダンプファイルからデータベースをリストア
SFTPなどを利用してVPSにPostgreSQLデータベースのダンプファイルを転送します。
VPSにSSHでログインして/var/lib/docker/volumes/<YOUR_APPNAME>/_data以下にダンプファイルをコピーします。
ローカルの開発環境からRailsアプリが稼働しているコンテナのシェルにログインします。
kamal app exec -i --reuse "bash"
そうするとstorageディレクトリにさきほどのダンプファイルがあるので、そのダンプファイルを指定してリストアします。
pg_restore --clean --no-acl --no-owner -h <YOUR_APPNAME>-db -U <DBUSER> -d <DBNAME> /rails/storage/<DUMPFILE>
Discussion