🚀
【Rails】最新!Rails7xMySQL8.0xDocker 環境構築
はじめに
今や開発環境の構築をするのに、Dockerを用いるのがあたりまえになってきたと思います。
そこで新たに環境構築をしようと思って、記事通りに実施してるのにうまくいかないという経験はないでしょうか?
バージョンやCPU(M1など)の影響で昔うまくいったけど、今はうまくいかないケースがあります。
そこで2023年版として新たに環境構築についてまとめていこうと思います。
また、今回は環境構築の手順に特化していますので、解説は最小限にしていきます。
環境
Apple M1 Pro
macOS Monterey 12.6.1
Ruby 3.1.4
Ruby on Rails 7.0.4.3
MySQL 8.0
ディレクトリ作成
mkdir rails_docker_app
cd rails_docker_app
各種ファイル作成
docker上で起動させるために必要な設定ファイルを作成・記述していきます。
設定ファイルの作成
touch {docker-compose.yml,Dockerfile,Gemfile,Gemfile.lock}
以下のような構成なっていれば大丈夫です
Dockerfile
Dockerfile
FROM ruby:3.1
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN gem update --system 3.3.20 && \
bundle install
COPY . /app
docker-compose.yml
docker-compose.yml
version: '3'
services:
web:
build: .
command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
container_name: web
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- db
tty: true
stdin_open: true
db:
image: mysql:8.0
platform: linux/amd64
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
container_name: db
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
TZ: "Asia/Tokyo"
ports:
- "3306:3306"
volumes:
db-volume:
Gemfile
Gemfile
source 'https://rubygems.org'
gem 'rails', '~> 7.0', '>= 7.0.3'
コマンド実行
設定ファイルの作成は終わったので、ここからはアプリ作成のために必要なコマンドを紹介していきます。
アプリの作成
docker-compose run --rm --no-deps web rails new . --force --database=mysql --skip-bundle
DBの接続先変更
config/database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
- password:
+ password: password
- host: localhost
+ host: db
ビルド
docker-compose build
DBの作成
docker-compose run --rm web rails db:create
起動確認
以上で全ての設定は完了しました。
最後にwebサイトにアクセスできるか確認していきましょう!
コンテナ起動
docker-compose up -d
起動確認
にアクセスして、以下の画像のような画面が表示されたら成功です!!
まとめ
いかがだったでしょうか?
Docker上で起動させるための最低限の手順を紹介させていただきました。
設定ファイルの細い解説別途記事でまとめていこうと思います。
Discussion