Dockerfile作成
まずはruby3とnodejsを使えるようにする
FROM ruby:3.0
ENV APP /app
RUN mkdir -p $APP && \
apt-get update -y && \
apt-get install default-mysql-client nodejs npm -y && \
npm uninstall yarn -g && \
npm install yarn -g -y
COPY . $APP/
WORKDIR $APP
docker-compose.yml作成
version: '3'
services:
app:
restart: always
build:
context: .
volumes:
- .:/app
イメージビルド実行
docker-compose build
イメージビルドの確認
docker images
イメージが作成されていればOK
dockerにRails7インストール
# コンテナに入る
docker-compose run app sh
# Rails7インストール
gem i -v 7.0 rails
プロジェクト作成
ディレクトリ名を .
とすると現在のディレクトリ直下にプロジェクト作成可能
rails new . -d mysql --javascript esbuild --css tailwind
これでプロジェクトが作成されればOK
Procfile.devを修正
esbuildを使う場合は rails s
の代わりに./bin/devを使うように変更されており、
./bin/devを実行すると、Procfile.devに記述されているコマンドが実行されます。
Procfile.devを以下のように修正
docker上で ./bin/dev
した場合にrailsサーバにアクセスできるように Procfile.devに -b 0.0.0.0 を追加
web: bin/rails server -b 0.0.0.0 -p 3000
js: yarn build --watch
css: yarn build:css --watch
mysqlを入れる
バージョンは8.0.27になっているが入れたいバージョンを入れる
docker-compose.ymlを以下に修正
※mysqlのDB情報はプロジェクト毎に修正してください
version: '3'
services:
app:
restart: always
build:
context: .
volumes:
- .:/app
command: sh -c "rm -f tmp/pids/server.pid && ./bin/dev"
stdin_open: true
tty: true
ports:
- 3000:3000
depends_on:
- db
db:
restart: always
image: mysql:8.0.27
platform: linux/amd64
environment:
MYSQL_DATABASE: rails_seven_sample_db
MYSQL_USER: rails_seven_user
MYSQL_ROOT_PASSWORD: seven_pass
MYSQL_PASSWORD: seven_pass
TZ: 'Asia/Tokyo'
MYSQL_ROOT_HOST: "%"
tty: true
command: mysqld --character-set-server=utf8mb4 --explicit_defaults_for_timestamp=true --default-authentication-plugin=mysql_native_password
ports:
- 3306:3306
commandにrm -f tmp/pids/server.pid
を追加しないとdocker compose upで2回目以降に上手く起動しないので注意。
pry-railsを使う設定
今回は開発時のデバッグツールとして、pry-railsを使う想定にしているのでapp:に以下記述も必要
stdin_open: true
tty: true
Dockerfileを修正
イメージが作成されるときにbundleを最新の状態にするため
Dockerfileにbundle installを追加しておく
FROM ruby:3.0
ENV APP /app
RUN mkdir -p $APP && \
apt-get update -y && \
apt-get install default-mysql-client nodejs npm -y && \
npm uninstall yarn -g && \
npm install yarn -g -y
COPY . $APP/
WORKDIR $APP
RUN bundle install
config/database.ymlでDB設定
docker-compose.ymlの dbのところに書いた設定を記述
hostにはdocker-compose.ymlのサービス名はdbに修正。
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: rails_seven_user
password: seven_pass
host: db
development:
<<: *default
database: rails_seven_sample_db
イメージ再作成
いままでのイメージは削除して再ビルド
docker-compose build
サーバ起動
docker-compose up
サーバが起動したら完了
esbuildの設定
特に設定不要。application.jsにjsファイルをimportして使えばOK
tailwindの設定
特に設定不要。viewにtailwindクラスを設定してあげればOK