勉強するときに環境構築にかなりつまづいたので、その手順をメモしときたいと思います。
#環境構築手順
前提として、rails開発用のディレクトリが用意されているものとします。
以下の手順に従ってファイル作成やコマンドを実行していけば問題なく手順は整うと思います。
##Dockerfileの作成(以下をコピペ)
# rubyはお好みのバージョンで(ローカルのバージョンがいいと思います)
FROM ruby:2.6.3
# 必要なパッケージのインストール(基本的に必要になってくるものだと思うので削らないこと)
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs
# 作業ディレクトリの作成、設定
RUN mkdir /app_name
##作業ディレクトリ名をAPP_ROOTに割り当てて、以下$APP_ROOTで参照
ENV APP_ROOT /app_name
WORKDIR $APP_ROOT
# ホスト側(ローカル)のGemfileを追加する
ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock
# Gemfileのbundle install
RUN bundle install
ADD . $APP_ROOT
##Gemfileの作成(以下をコピペ)
source 'https://rubygems.org'
#好きなバージョンを指定
gem 'rails', '5.2.2'
##空のGemfile.lockの作成
何も書かなくていいです。
##docker-compose.ymlを作成(以下をコピペ)
version: '3'
services:
db:
image: mysql:8.0.17
command: mysqld --default-authentication-plugin=mysql_native_password
volumes:
- ./db/mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: root
ports:
- "4306:3306"
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app_name
ports:
- "3000:3000"
links:
- db
##ターミナルでrails newを実行
$ docker-compose run web rails new . --force --database=mysql --skip-bundle
上のコマンドを打ってしばらく待つ
##database.ymlを修正(一度全て消してから以下をコピペ)
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <%= ENV.fetch("MYSQL_USERNAME", "root") %>
password: <%= ENV.fetch("MYSQL_PASSWORD", "root") %>
host: <%= ENV.fetch("MYSQL_HOST", "db") %>
development:
<<: *default
database: app_name_development
test:
<<: *default
database: app_name_test
production:
<<: *default
database: app_name_production
username: app_name
password: <%= ENV['APP_NAME_DATABASE_PASSWORD'] %>
##ターミナルでDockerを起動
docker-compose build
しばらく待つ。できたら以下を実行。
docker-compose up
##DB作成
別のターミナルを開いて以下を実行
docker-compose run web rails db:create
##ブラウザでlocalhost:3000にアクセス
サーバーが起動してたらおk。
###サーバーを止める
docker-compose down
###サーバーを再起動
docker-compose up
#まとめ
これでrailsアプリ作成の準備が整うはずです。
環境構築は完全に初見ごろしだと思うので誰かの助けに慣れたら嬉しいです。
また、何かおかしい点とかあれば言って頂けるとありがたいです。
お付き合い頂きありがとうございました。
#参考サイト