【DockerCompose】Herokuコンテナデプロイとマイグレーション

プログラミング

DockerComposeでのRailsアプリ作成が終わっていることを前提とします。

こちらの記事ではHerokuにコンテナをデプロイ、また、マイグレーションを行う手順を記します。

実行環境
・Docker version 19.03.13
・docker-compose version 1.27.4

ローカル環境ではコンテナを停止しておく

ローカル環境でコンテナが動いているとHerokuへのデプロイ時にエラーが出る可能性があるので、止めておきます。

また、pidも予め削除しておきます。

$ docker-compose down
$ rm tmp/pids/server.pid

新規にデプロイする場合

まずはHerokuに新規アプリケーションを作成します。

$ heroku create

データベースを使う場合は合わせてHeroku上にも構築しておきます。

$ heroku addons:create heroku-postgresql:hobby-dev

これ以降の手順は後述する既存アプリのデプロイと一緒です。

既存アプリのデプロイ(更新)

既にHerokuにデプロイ済のアプリケーションを更新する場合の手順です。

まずはHeroku CLI を利用して、Herokuコンテナレジストリにログインします。

$ heroku container:login

次にイメージのビルドとプッシュを行います。
ここで既にあるコンテナではなく、コンテナが新規作成されます。

$ heroku container:push web

# プッシュが終わると、以下のような一文が出力される
Your image has been successfully pushed. You can now release it with the 'container:release' command.

コンテナレジストリへのプッシュが正常に終わったら、イメージのリリースを行います。

$ heroku container:release web

マイグレーションの実行

マイグレーションファイルに更新がかかっている場合はHeroku上のDBにもマイグレーションを実行してやる必要がある。

$ heroku run rails db:migrate

Herokuのdynoを再起動します。
dynoとはHerokuアプリケーションを実行しているLinuxコンテナです。

$ heroku ps:restart

アプリを実行する

デプロイが済んだらアプリケーションをブラウザで開きます。

$ heroku open

今回はここまで。では、また〜。