ローカル環境のdbをfly.ioのdbに移行する
無料枠のfly.ioだと、rails db:seedを実行した時メモリが不足しているようで途中で止まってしまうので ローカル環境のdbの内容を移行することにしてみました。
postgreSQLのコンテナの中でpostgresユーザーに切り替えた後に、pg_dumpコマンドでデータベースのバックアップを取得します。
docker exec -it <PostgreSQLのcontainer id> bash su - postgres pg_dump myapp_development > myapp_development.dump exit exit
docker cpコマンドで取得したバックアップをホスト環境に持ってきます。
docker cp <PostgreSQLのcontainer id>:/var/lib/postgresql/myapp_development.dump myapp_development.dump
fly proxyコマンドを実行するとpsqlコマンドでfly.ioのPostgreSQLに接続できるようになるようになるみたいです。
fly proxy 15432:5432 -a <postgres-app-name>
fly proxyコマンドを実行したら別ターミナルからpsql -fコマンドで取得したバックアップファイルを実行します。
psql postgres://{username}:{password}@localhost:15432 -f myapp_development.dump
usernameとpassowrdは環境変数DATABASE_URLを見ることで確認できると思います。
fly ssh console env | grep DATABASE_URL
最後にar_internal_metadataテーブルのvalueがdevelopmentとなっているのでproductionに変えておくといいと思います。
fly postgres connect -a <postgres-app-name> \c db名 delete from ar_internal_metadata where key = 'schema_sha1'; update ar_internal_metadata set value = 'production' where key = 'environment';