はじめに
前回の記事ではGitLabとRender.comを連携させる方法についてまとめました。Herokuはこれまでも何回か使っているので個人的に振り返りを含めて改めてまとめてみます。
Herokuへのデプロイ方法
Render.comについてはGitHubに加えてGitLabもサポートしているため便利でしたが、HerokuについてはGitHubしかサポートしていません。ということでこの記事ではデプロイする方法を2種類紹介します。
- GitHub連携(GitHubユーザー向け)
- Gitベースデプロイメント(GitLabユーザー向け)
1.GitHub連携
GitHubとの連携は非常に簡単です。
- Herokuにログイン後、ダッシュボードから[New] > [Create new app]と進みます。
- "App name"(アプリ名)に任意の名前を入力、"region"を選択して、「Create app」ボタンで次へ進みます。※"App name"(アプリ名)に何も入力しないとランダムで名前が生成されます。
- Appが作成されると、"Deploy"タブが最初に表示されると思います。"Deploy"タブ内の上から2つ目に"Deployment method"という項目があるのでそこから「GitHub (Connect to GitHub)」を選択します。するとその下の項目に"Connect to GitHub"という項目が表示されリポジトリが検索できるので、GitHubのリポジトリ名を入力します。
- 該当のリポジトリが見つかったら「Connect」ボタンで接続しましょう。
- すると今度はその下の項目として"Automatic deploys"が表示されます。ここでbranchを選択し「Enable Automatic Deploys」を押下します。
- 自動でデプロイが走るので"Activity"タブの「View build log」からステータスを確認しましょう。下の画像のように、緑字で"Build Succeeded"とともにチェックマークとハンマーが出てきたらデプロイ完了です。

- "Settings"タブからスクロールダウンしてくと、"Domains"という項目とともにデプロイされた先のURLが確認できます。
- 今後はローカルからGitHubにPushする度に自動でデプロイが走るようになります。自動デプロイを解除したい場合には、再度"Deploy"タブ内の"Automatic deploys"から「Disable Automatic Settings」ボタンを押すと解除でき、手動デプロイに切り替えられます。
2.Gitベースデプロイメント
こちらはHeroku CLIからHeroku Gitに直接デプロイする方法です。
- Appを作成するところまでは1.GitHub連携と同じです。"Deployment method"から「Heroku CLI」を選択すると、下画像のようにその下の項目に"Deploy using Heroku Git"という項目が表示されるので、これを参考にしつつ進めましょう。

- CLIから
heroku login
を実行するとHerokuの認証画面に飛ぶので、そこからログインを実行します。メールアドレス・パスワード入力後CLIに戻ります。
- その後は以下のように
heroku git:remote
でローカルリポジトリにremote
を追加後、git push "heroku" main
でPUSHします。
- URLとともに`remote: Verifying deploy... done."と表示されれば、デプロイ完了です。
共通
1, 2どちらにしてもここでデプロイは完了していますが、URLから遷移したとてまだDjangoの管理画面は操作できないため実質まだ使えませんね。そこで管理画面にログインしてデータを入力するところまで設定しましょう。
- HerokuにおいてShellを操作する場合には、CLIでのコマンド入力時、上の通り
$ heroku run
を先頭につけます。
- まずは
python manage.py migrate
とすることで、Djangoプロジェクトのアプリ内のマイグレーションファイルをHerokuに反映させます。
- 続いて
python manage.py createsuperuser
とCLI上で実施することでSuperuserを作成することができます。Username
, Email
, Password
のうちメールアドレスは任意設定の設定項目になります。UsernameとPasswordを入力して上のコードのような記述が出て来れば完成です。後はログインして管理画面をいじっちゃってください。
まとめ
今回紹介したのは2種類だけでしたが、他にもDockerベースでのデプロイ方法やGitLab-CI/CDを利用したものもありますので、機会があれば紹介します。
参考