記事一覧に戻る

Rails + DockerでRails7を爆速環境構築する

2023-09-302 min read技術記事
#Rails#環境構築#Docker#爆速#RubyonRails7.0

はじめに

  • エンジニア歴半年 + αの備忘録
  • 多分また使うからメモ
  • 環境はMac Appleシリコン
  • 今回はチームでの開発なので、各PCの環境に依存せずに開発できるように構築する〜

やりたいこと

  • Rails APIモード + Dockerでの環境構築

早速やっていく

今回作るディレクトリ構造

app-name
├── // ここにRailsの各ディレクトリが生成されます(appなど)
├── Dockerfile
├── docker-compose.yml
├── Gemfile
└── Gemfile.lock

これだけ〜〜〜超楽だわ

Gemfileを編集

source "https://rubygems.org"
gem "rails"

railsのバージョンは今回は指定しない。Gemfile.lockで固定していきます。

Gemfile.lockを編集

Gemfile.lockは空でおけ

Dockerfileを編集

FROM ruby:3.2

WORKDIR /app

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

RUN bundle install

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

rubyのバージョンはお好みで

docker-compose.yml

version: '3'
services:
  db:
    image: mysql:8.0.33
    volumes:
      - data-volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
    ports:
      - 3306:3306
  back:
    build: .
    volumes:
      - .:/app
    ports:
      - 3000:3000
    depends_on:
      - db

volumes:
  data-volume:

データベースはmysqlを使用、back側のポートは3000にしてみました。

Dockerで環境をビルドする

ターミナル開いてディレクトリに移動、環境をビルドします。

注:Docker desktopを使っている方は起動しとかないとコマンド使えません(当たり前)

> docker-compose build

Rails newする

ここでデータベースとapiモードを指定します。

今回はバックエンドとフロントエンドを分離して開発を行うのでフロント部分は要らないって感じですね

> docker-compose run --rm back rails new . --force --database=mysql --api

Rails newはしっかりできましたか?

ここでしっかりRails newが行われない場合は、マウントされているボリュームのディレクトリが違うなどの可能性があります。Dockerfileとdocker-compose.ymlを見直してみましょう

database.ymlを編集

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: app_development

test:
  <<: *default
  database: app_test

production:
  <<: *default
  database: app_production
  username: app
  password: <%= ENV["APP_DATABASE_PASSWORD"] %>

ビルドし直す

bundle installを実行するために一度リビルドして、立ち上げ直しましょう

> docker-compose build
> docker-compose up -d

DBを作る

最後にDBを作ります

> docker-compose run back rails db:create

ここまできたら

にアクセスしてみましょう!!

Railsのアイコンが表示されたら完了です!お疲れ様でした。

備忘録

Rails newすると.gitファイルが作られ、非常にだるい便利です。

クローンしてきて、そこに環境を作る人が大多数だと思いますので、消すのが無難です。

ディレクトリに移動して手動で消すか、

> rm -rf .git

これで消えます。

参考