前回の続き
参考にさせていただいた記事:
【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 [アプリ名]
できました。
ローカルだけで起動確認した時:
ちゃんとHerokuでデプロイできた時: