DockerによるRuby on Railsの環境構築手順
だいぶ、手間どりましたが、以下のリンク先が一番わかりやすかったので、今後のためにも、まとめたいと思います。
※リンク先の方は丁寧親切です。
https://remonote.jp/docker-mac-rails-postgresql
任意の作成したディレクトリー配下に以下の4つのファイルを作成
・ dockerfile
・ Gemfile
・ Gemfile.lock →空のファイルで良い
・ docker-compose.yml
FROM ruby:2.6.2
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /blog_app_sample
WORKDIR /blog_app_sample
ADD Gemfile /blog_app_sample/Gemfile
ADD Gemfile.lock /blog_app_sample/Gemfile.lock
RUN bundle install
COPY . /blog_app_sample
・今回、blog_app_sampleというアプリを作成する前提。
・rubyのバージョン指定は任意
source 'https://rubygems.org'
gem 'rails'
# gem 'rails', '~> 5.2.3'でも良い
version: '3'
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
conposeのバージョンがあるみたい。
また、ymlなので、インデントには注意する。
アプリケーションの生成
$ docker-compose run web rails new . --force --database=postgresql
Dockerのイメージ構築
$ docker-compose build
config/database.ymlの設定
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password:
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: blog_app_sample_development
test:
<<: *default
database: blog_app_sample_test
production:
<<: *default
database: blog_app_sample_production
username: blog_app_sample
password: <%= ENV['BLOG_APP_SAMPLE_DATABASE_PASSWORD'] %>
defaultのところを追記する
Dockerの起動
$ docker-compose up
これでlocalhost:3000にアクセスすると、いつもの画面が表れる。
※停止は、Ctrl+C
pidの削除はこれ↓
$ rm tmp/pids/server.pid
コマンド実行例
$ docker-compose run web rails g scaffold Blog title:string content:text
$ docker-compose run webが頭につく。
Gemfileを編集した時
$ docker-compose run web bundle install
$ docker-compose build
再度、イメージ構築をしないといけない。
https://qiita.com/fuku_tech/items/dc6b568f7f34df10cae7
https://qiita.com/kenzoukenzou104809/items/90dd187a3fb1c8897656
Herokuへのデプロイ
# ローカルでWebサーバーが動作している(pidsが存在する)と、herokuでWebサーバーが起動しない可能性があるので、一旦ローカルのサーバーを停止しておきます。また server.pid が存在する場合は消しておきます
$ docker-compose down
$ rm tmp/pids/server.pid
$ heroku container:login
$ heroku login
$ heroku create
$ heroku container:push web
$ heroku addons:create heroku-postgresql:hobby-dev
# このコマンドは、念のため実行
$ heroku run rails db:migrate
$ heroku container:release web
この状態で、「git push heroku master」とすると
恐れく、heroku.ymlが無いとエラーがでるので、
以下のようなheroku.ymlを作成し、「git push heroku master」する
build:
languages:
- ruby
release:
command:
- rake db:migrate
run:
web: bundle exec puma -C config/puma.rb
https://ginpen.com/2018/08/07/docker-rails-example/
https://qiita.com/okyk/items/a374ddb3f853d1688820
Author And Source
この問題について(DockerによるRuby on Railsの環境構築手順), 我々は、より多くの情報をここで見つけました https://qiita.com/a-itabashi/items/0da7da782a71b13dd841著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .