よしたく blog

ほぼ週刊で記事を書いています

Docker Compose環境のRailsをHerokuへデプロイする

Docker Compose 環境で作成した Rails アプリケーションを Heroku へアップロードするには Git を使用したデプロイとは別のコマンド実行が必要になる。 例えば Git を使用するときはgit push heroku mainなどでデプロイができたが、Docker Compose 環境は Heroku CLI ツールを使うことになる。 今回は Docker Compose 環境をデプロイするための手順をまとめる。

Dockerfile と docker-compose.yml

Dockerfile と docker-compose.yml も参考として載せておく。

Dockerfile

FROM ruby:3.1.0

ENV APP_ROOT /myapp
RUN mkdir $APP_ROOT
WORKDIR $APP_ROOT
ADD . $APP_ROOT
RUN bundle install

CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.yml

version: '3'
services:
  db:
    image: postgres
    ports:
      - '5432:5432'
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: 'admin'
      POSTGRES_PASSWORD: 'admin-pass'
  web:
    build: .
    volumes:
      - .:/myapp
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    ports:
      - 3000:3000
    depends_on:
      - db

Docker Compose 環境をデプロイするまで

Heroku の Container Registry にログインする。

heroku container:login

Heroku アプリを作成する。

heroku create

Container Registry に docker image を push する。

heroku container:push web

push した docker image を Heroku アプリにリリースする。

heroku container:release web

まとめ

Docker Compose 環境で作成した Rails アプリケーションを Heroku へアップロードする手順を確認した。 無事にアップロードできたが、毎回コマンドを打ち込まなければいけないのが大変とも感じる。 heroku.ymlを使ってデプロイする方法もあるので、こちらも確認していく。