構成

Docker Composeを使って、Ruby on Rails、データベースにはMySQL互換のMariaDB、データベース編集のためのphpMyAdmin、オブジェクトストレージのminioの4つをまとめて立ち上げるようにしています。

ファイル構成

任意のディレクトリ(フォルダ)を/とすると

/src
/compose.yaml
/Dockerfile

という感じの配置。srcにはRailsアプリが入ります。

ファイル記述

compose.yaml

services:
  app:
    build: .
    tty: true
    stdin_open: true
    environment:
      RAILS_ENV: development
    working_dir: /app
    volumes:
      - ./src:/app
    ports:
      - '3000:3000'
    depends_on:
      - db
      - minio
    command: >
      bash -c "rm -f /app/tmp/pids/server.pid &&
      rm -f /app/public/assets &&
      gem cleanup &&
      bundle install -j4 &&
      rails s -b 0.0.0.0"

  minio:
    image: minio/minio:latest
    tty: true
    stdin_open: true
    environment:
      MINIO_ROOT_USER: 'minioroot'
      MINIO_ROOT_PASSWORD: 'minioroot'
    volumes:
      - minio-vol:/data
    ports:
      - '9000:9000'
      - '9001:9001'
    command: server /data --console-address ":9001"

  db:
    image: mariadb:latest
    tty: true
    stdin_open: true
    environment:
      TZ: 'Asia/Tokyo'
      MARIADB_ROOT_PASSWORD: 'mdbroot'
    volumes:
      - db-vol:/var/lib/mysql
    ports:
      - '3306:3306'

  phpmyadmin:
    image: phpmyadmin:latest
    tty: true
    stdin_open: true
    environment:
      PMA_HOSTS: 'db'
    ports:
      - '8080:80'
    depends_on:
      - db

volumes:
  db-vol:
  minio-vol:

Dockerfile

FROM ruby:3.2.3
RUN apt-get update && apt-get install -y build-essential imagemagick libvips ffmpeg
RUN gem i -v 7.1.3 rails

構築

シェルにて

docker compose run app rails new . --database=mysql
docker compose down

これでRailsアプリが作成されました。

DBと接続するために、/src/config/database.ymlのusername、passwordなどを編集してください。

docker compose up --build -d

これで開発サーバーが立ち上がりました。http://localhost:3000/ にブラウザからアクセスするとRailsの最初の画面が見えます。お疲れ様でした。