naopoyo.com
  • Docs
  • Tags
  • Bookmarks
  • Tools
  • About
  • Docs
  • Tags
  • Bookmarks
  • Tools
  • About

目次

© naopoyo

💎

RailsのプロジェクトをDockerコンテナ上に作成する

公開日
約1年前
2024-09-21
更新履歴
GitHubで見る
  • Rails
  • Ruby
  • Docker

ディレクトリ構成

ディレクトリ構成
  • Project Root
    • Taskfile.yaml
    • docker
      • docker-compose.yml
      • server
        • Dockerfile
    • server
      • .devcontainer
        • devcontainer.json

Taskfile.yml作成

Taskfile.yml
version: '3'

tasks:
  'dev:build':
    desc: 開発環境コンテナビルド
    cmds:
      - docker-compose -f docker/docker-compose.yml up -d --build
  'dev:start':
    desc: 開発環境コンテナ起動
    cmds:
      - docker-compose -f docker/docker-compose.yml up -d
  'dev:stop':
    desc: 開発環境コンテナ停止
    cmds:
      - docker-compose -f docker/docker-compose.yml down

Dockerfile作成

docker/server/Dockerfile
FROM ruby:3.2.4-slim
WORKDIR /tmp
RUN apt-get update && apt-get install -y \
    build-essential \
    curl \
    libmysqld-dev \
    wget \
    git \
    vim \
    nano \
    zsh \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/* \
 && gem install bundler
docker/docker-compose.yaml
version: "3"

name: "project"

volumes:
  db_data:
  redis_data:
  server_bundle:
  server_workspace_root:

services:
  server_workspace:
    build: server
    command: sleep infinity
    environment:
      BUNDLE_APP_CONFIG: /var/workspace/server/.bundle
    working_dir: /var/workspace/server
    volumes:
      - ../:/var/workspace/:cached
      - ~/.ssh/:/root/.ssh/
      - server_bundle:/usr/local/bundle
      - server_workspace_root:/root/
    ports:
      - 3000:3000
  db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
    ports:
      - 3306:3306
  redis:
    image: "redis:7"
    volumes:
      - "redis_data:/data"
    ports:
      - "6379:6379"

Devcontainerの設定

server/.devcontainer/devcontainer.json
{
  "name": "project-server",
  "dockerComposeFile": "../../docker/docker-compose.yml",
  "service": "server_workspace",
  "workspaceFolder": "/var/workspace/server",
  "customizations": {
    "vscode": {
      "extensions": [
        "castwide.solargraph",
        "donjayamanne.githistory",
        "EditorConfig.EditorConfig",
        "esbenp.prettier-vscode",
        "GitHub.vscode-pull-request-github",
        "KoichiSasada.vscode-rdbg",
        "MateuszDrewniak.ruby-test-runner",
        "Shopify.ruby-lsp"
      ]
    }
  },
  "shutdownAction": "none"
}

Railsプロジェクト作成

Gemfileを作成するために次のコマンドを実行します。

Terminal
bundle init

Gemfileを修正

Gemfileの次の記述のコメントを外して有効にします。

Gemfile
gem 'rails'

rails gemをインストール

Terminal
bundle config set path 'vendor/bundle'
bundle install

rails new

Terminal
bundle exec rails new . -B --api -d mysql --skip-test

rails new のオプション

オプション説明
--apiAPIモードでインストール
--skip-testminitestのスキップ
-Bbundle install のスキップ
-d mysqlmysql を使用する

.gitignore修正

.gitignore に以下を追記する。

.gitignore
vendor/bundle

Dotenvを追加

Gemfileの次の記述を追加して bundle install を実行します。

Gemfile
group :development, :test do
  # ...
  gem "dotenv-rails"
end

DBセットアップ

Terminal
bundle exec rails db:setup
bundle exec rails db:migrate

開発サーバー起動

Teminal
bundle exec rails s -b 0.0.0.0

目次

最近更新された記事

😙
開発日記 / Next.js サーバーサイドのデバッグの覚書
約16時間前 - 2025年10月14日
  • 開発日記
🚆
VS Codeでよく使うショートカット
約17時間前 - 2025年10月14日
  • VS Code
🍕
Next.js + Vitest の環境構築手順
約20時間前 - 2025年10月13日
  • Vitest
  • Next.js