アウトプットログ

チラシの裏からの脱出に向かう線形のブログ

前回の続き

参考にさせていただいた記事:

【Imagemagick対応】Dockerを利用して、Rails環境を作成 - Qiita

Dockerで作成したRailsアプリをHerokuにデプロイ - Qiita

動かなかった箇所を修正しつつログしておきます。

1)まずはRails アプリを作成

フォルダ作成、Dockerfile, docker-compose.yml, Gemfile, Gemfile.lockを作成して内容編集

#Dockerfile

FROM ruby:2.6

ENV RUNTIME_PACKAGES="linux-headers libxml2-dev libxslt-dev make gcc libc-dev nodejs tzdata postgresql-dev postgresql" \
    DEV_PACKAGES="build-base curl-dev" \
    HOME="/myapp"

WORKDIR $HOME

# Counter Measure to Error:"Autoprefixer doesn’t support Node v4.8.2. Update it"
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
        && apt-get install -y nodejs

RUN apt-get update && \
    apt-get install -y default-mysql-client \
    postgresql-client \
    sqlite3 \
    --no-install-recommends && \
    rm -rf /var/lib/apt/lists/*

ADD Gemfile      $HOME/Gemfile
ADD Gemfile.lock $HOME/Gemfile.lock

RUN bundle install

ADD ./ $HOME
COPY ./ $HOME

CMD ["rails", "server", "-b", "0.0.0.0"]
#docker-compose.yml
version: '3'
services:
    image: postgres
    environment:
      POSTGRES_HOST_AUTH_METHOD: 'trust'
  web:
    container_name: rails_app
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
#Gemfile
source 'https://rubygems.org'
gem 'rails', '5.2.2'

gem 'rmagick'

2) コンテナの立ち上げ

ターミナルを立ち上げて、docker-compose runでRailsファイル群を作成

docker-compose run web rails new . --force --database=postgresql

3) できたファイルの中にあるdb関連のconfigをいじる

#config/database.yml
default: &default
  adapter: postgresql
  encoding: unicode
  host: db           # 上書き
  username: postgres # 上書き
  password:          # 上書き
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

4)Railsを起動してみる

docker-compose up

http://localhost:3000にアクセスして確認。

Activerecord dbエラーが多分出るので、データベースを作成し、マイグレートする。

docker-compose run web rails db:create
docker-compose run web rails db:migrate

もう一度起動確認。

docker-compose up

http://localhost:3000にアクセスして確認。

5)次の準備のために起動停止する。

docker-compose restart
docker-compose stop

6) Herokuの準備

herokuのダッシュボードでNew > create new app

App nameを設定:任意

次にHerokuの postgres add-onを設定

Appのページoverviewタブで、Configure Add-onsをクリック

heroku postgresをHobby Devで設定

設定確認できたら、Heroku PostgessコンテナのしたにあるIDをメモっておく

7)コンテナをHerokuにプッシュ

(プッシュする前にRailsコンテナが停止していることを確認する)

Appファイルのある場所でターミナルにコマンド入力

heroku login
heroku container:login
heroku container:push web -a [アプリ名]  #めっちゃ時間かかる
heroku container:release web -a [アプリ名]
heroku addons:attach [postgressコンテナ名] -a [アプリ名]

heroku run rake db:migrate -a [アプリ名]
heorku open -a [アプリ名]

できました。

ローカルだけで起動確認した時:

f:id:araquan:20200228210801p:plain

ちゃんとHerokuでデプロイできた時:

f:id:araquan:20200228210839p:plain