1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rails7 + Mysql8.0 + Docker Composeで開発環境構築

Last updated at Posted at 2025-03-10

はじめに

  • rails7 + Mysql + Docker Composeの開発環境を構築していきます。

前提

  • WSL2・Docker・VScodeがインストールされていること

構築手順

  • 作業ディレクトリの作成
mkdir rails7-docker
cd rails7-docker
  • 空ファイルの準備
touch {Dockerfile.dev,docker-compose.yml,Gemfile,Gemfile.lock,entrypoint.sh}
  • Dockerfile.devの編集
FROM ruby:3.2.2
ARG RUBYGEMS_VERSION=3.3.20

# 作業ディレクトリを指定
WORKDIR /sample_rails

# ホストのGemfileをコンテナ内の作業ディレクトリにコピー
COPY Gemfile Gemfile.lock /sample_rails/

# bundle installを実行
RUN bundle install

# ホストのファイルをコンテナ内の作業ディレクトリにコピー
COPY . /sample_rails/

# entrypoint.shをコンテナ内の作業ディレクトリにコピー
COPY entrypoint.sh /usr/bin/

# entrypoint.shの実行権限を付与
RUN chmod +x /usr/bin/entrypoint.sh

# コンテナ起動時にentrypoint.shを実行するように設定
ENTRYPOINT ["entrypoint.sh"]

# コンテナ起動時に実行するコマンドを指定
CMD ["rails", "server", "-b", "0.0.0.0"]
  • docker-compose.ymlの編集
version: '3'
services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - mysql_volume:/var/lib/mysql
    ports:
      - '3306:3306'
    command: --default-authentication-plugin=mysql_native_password

  web:
    build:
      context: .
      dockerfile: Dockerfile.dev
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails tailwindcss:build && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/sample_rails
    ports:
      - 3000:3000
    stdin_open: true
    tty: true
    depends_on:
      - db
volumes:
  mysql_volume:
  • Gemfileの編集
source 'https://rubygems.org'
gem 'rails', '~> 7.0'
  • entrypoint.sh の編集
#!/bin/bash
set -e

# Remove a potentially pre-existing server.pid for Rails.
rm -f /sample_rails/tmp/pids/server.pid

# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"
  • Railsプロジェクトの作成
docker-compose run web rails new . --force --no-deps --database=mysql --css=tailwind --skip-jbuilder --skip-action-mailbox --skip-action-mailer --skip-test
  • Dockerfileの名前変更
    Dockerfile⇒Dockerfile.prod
    ※rails new実行後、Dockerfileが自動生成される

  • Dockerコンテナイメージの作成

docker-compose build
  • config/database.ymlの編集
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password
  host: db

development:
  <<: *default
  database: sample_rails_development

test:
  <<: *default
  database: sample_rails_test
  • database.ymlの権限変更し、保存
cd config
sudo chown ユーザ名 database.yml
  • データベースの作成
docker-compose run web rails db:create
  • コンテナの起動
docker-compose up -d
docker-compose run web rails g scaffold post title:string body:text
  • データベースのマイグレーション
docker-compose run web rails db:migrate
  • Railsサーバの再起動
docker-compose restart

image.png

  • コンテナ削除
docker-compose down

おわりに

  • 無事開発環境の構築ができました。ざっくり手順を備忘録として残しています。

参考記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?