0
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?

More than 1 year has passed since last update.

DockerでRails7の開発環境構築(MySQL)

Last updated at Posted at 2023-03-27

構築する環境のバージョン情報

  • Ruby: 3.1.0
  • Ruby on Rails: 7.0.4
  • MySQL: 8.0

手順

1. プロジェクトフォルダを作成、移動

$ mkdir my-rails-app
$ cd my-rails-app

以下のファイルを作成します。

  • Dockerfile
  • docker-compose.yml
  • Gemfile
  • Gemfile.lock
$ touch Dockerfile docker-compose.yml Gemfile Gemfile.lock

2. Dockerfileの中身を記述

Dockerfile
FROM ruby:3.1.0

RUN mkdir /app
WORKDIR /app

COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock

RUN bundle install
COPY . /app

EXPOSE 3000

CMD ["rails", "server", "-b", "0.0.0.0"]

なお、Rails 7 では Webpacker が標準では組み込まれなくなったので yarn や Node.js のインストールは不要です。

3. Gemfileの中身を記述

Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '3.1.0'

gem 'rails', '~> 7.0.4'
gem 'mysql2'

Gemfile.lockは空のままで大丈夫です。

4 .docker-compose.ymlに以下の内容を記述

docker-compose.yaml
version: '3.9'
services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: myrootpassword
      MYSQL_DATABASE: myrailsapp_development
      MYSQL_USER: myrailsapp
      MYSQL_PASSWORD: myrailsapppassword
    volumes:
      - db-data:/var/lib/mysql
    ports:
      - "3306:3306"
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && rails server -b '0.0.0.0'"
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db

volumes:
  db-data:

5. Railsアプリケーションを作成

$ docker-compose run web rails new . \
--force --no-deps --database=mysql --skip-javascript

--skip-javascriptオプションを追加して、JavaScriptの設定をスキップしています。

6. 生成されたconfig/database.ymlを編集し、データベース設定を変更

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: myrailsapp
  password: myrailsapppassword
  host: db

development:
  <<: *default
  database: myrailsapp_development

test:
  <<: *default
  database: myrailsapp_test

production:
  <<: *default
  database: myrailsapp_production
  username: <%= ENV['MYRAILSAPP_DATABASE_USER'] %>
  password: <%= ENV['MYRAILSAPP_DATABASE_PASSWORD'] %>
  host: <%= ENV['MYRAILSAPP_DATABASE_HOST'] %>

7. RailsアプリとMysqlデータベースのコンテナをビルド&実行

$ docker-compose up --build

動作確認

http://localhost:3000/ に移動し、起動を確認します。
以下のような画面が出れば成功です。
スクリーンショット 2023-03-28 0.58.13.png

0
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
0
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?