▶️

dockerコンテナをGitHub ActionsでHerokuに自動デプロイ

2025/02/02に公開

はじめに

GitHub Actionsを用いたHerokuへの自動デプロイについて、情報が少なかったので記事にしていきます
今回はRailsを用いたwebアプリをdocker上で構築し、Herokuにデプロイします
Heroku CLIを用いた手動のデプロイは成功している前提です

結論

リポジトリ直下に.github/workflows/workflow.ymlを作成します。ディレクトリ名はこの通りにして下さい
下記をworkflow.ymlにコピペすればOKです。

workflow.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

      - name: Install Heroku CLI
        run: |
          curl https://cli-assets.heroku.com/install-ubuntu.sh | sh
          heroku container:login
        env:
          HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}

      - name: Checkout
        uses: actions/checkout@v3

      - name: Build
        uses: gonuit/heroku-docker-deploy@v1.3.3
        with:
          email: ${{ secrets.HEROKU_EMAIL }}
          heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
          heroku_app_name: ${{ secrets.HEROKU_APP_NAME }}
          dockerfile_directory: ./ # Dockerfileが存在するディレクトリ
          dockerfile_name: Dockerfile
          docker_options: "--no-cache"
          process_type: web

ポイント

stepsCheckout, Buildのみを記述している例が多いですが、自分の環境ではそのままだと

といった、Heroku CLIが見つからない旨のエラーが出ました。そこで、冒頭にInstall Heroku CLIとしてHeroku CLIのインストールを手動で行うことで、エラーが解消されました。

設定手順

  1. 冒頭に示したymlファイルを作成します。
  2. GitHubのリポジトリを開いて、
    Settings -> Secrets and variables -> Actions
    からNew repository secretで以下の環境変数を設定します。
    変数名 内容
    HEROKU_EMAIL Herokuに登録したメールアドレス
    HEROKU_API_KEY HerokuのAPIキー
    HEROKU_APP_NAME デプロイするアプリの名前
  3. mainブランチにpushすると、自動でデプロイが開始されます。

参考

https://qiita.com/aki-743/items/aaaf8ae299c5e4d6bcf4
https://zenn.dev/nozomi_iida/articles/rails_heroku

Discussion