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?

【ざっくりと解説】Mac環境においてdocker-composeで既存のrailsアプリをDocker化する方法

Last updated at Posted at 2025-10-19

はじめに

Mac環境で、docker-composeを使い、既存のrailsアプリをDocker化する方法をまとめました。
今回はdocker-composeにふれるのがメインです。docker-composeは、複数のコンテナを組み合わせて1つのアプリケーションとして構成を定義するファイルです。今の主流になります。

1つだけコンテナをつくることももちろん可能です。

環境

以下の環境で構築しました。

macOS Sequoia 15.6.1
Rails 7.0.6
ruby 3.2.2
Postgres 12

手順

1. Macのターミナル(Terminal)を起動。

2. GitHub内で作成したrailsアプリをgit clone <リポジトリのURL>コマンドで、ローカル環境へ。(ディレクトリは任意の場所で問題なし)

3. 【下準備】Docker化するのにRailsとpostgreSQL2つのコンテナを立てる。

  • ディレクトリ dockerの作成:mkdir docker
  • cd dockerでディレクトリ内に移動
  • docker内にDockerfileの作成:touch Dockerfile(以下のコードを入力 vi/vim Dockerfileで編集)
# ベースイメージの指定
FROM ruby:3.2.2

# パッケージのインストールと更新
RUN apt-get update -qq && apt-get install -y --no-install-recommends nodejs postgresql-client build-essential libpq-dev && rm -rf /var/lib/apt/lists/*

# 作業ディレクトリの指定
WORKDIR /myapp

# fileの追加
COPY Gemfile Gemfile.lock ./

# gemをインストールする際のコマンド
RUN bundle install   

COPY . /myapp
  • docker-compose.ymlの作成: touch docker-compose.yml(以下のコードを入力 vi/vim docker-compose.ymlで編集)
services:
# dbコンテナの設置
  db:
    container_name: rails-docker-db
    image: postgres:12
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
    volumes:
      - type: volume
        source: rails-docker-db-volume
        target: /var/lib/postgresql/data
# webコンテナの設置
  web:
    build:
      context: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
    volumes:
      - type: bind
        source: .
        target: /myapp
    ports:
      - '3000:3000'     
    depends_on:
      - db

volumes: 
  rails-docker-db-volume:

注意
バージョンを指定するversion: '3'をservices:前に記入していましたが、Docker Compose v2 以降では、version: 行が不要。

  • gemfileを作成:touch gemfile(以下のコードを入力 vi/vim gemfileで編集)
ruby "3.2.2"gem 
"rails", "~> 7.0.6"

4. config/database.ymlの編集
postgreSQLの設定を行います。以下のコードを入力(vi/vim config/database.ymlと入力)。

default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: <%= ENV['POSTGRES_USER'] %>
  password: <%= ENV['POSTGRES_PASSWORD'] %>
  port: 5432  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: myapp_development

5.Docker化するのにRailsとpostgreSQL2つのコンテナを立てる。docker-compose buildでイメージの作成。

5. docker-compose up -dでコンテナの作成と起動。
-dはデタッチドモード(バックグラウンド実行)

6. docker-compose exec web bashでコンテナの中に入る。
ここでコンテナに入るので、ユーザ名がroot等に変更します。

7. rails db:createでデータベースを作成。
すでにあっても問題ありません。

8. rails db:migrateでデータベースの更新。

9. 最終確認
ブラウザ上でhttp://localhost:3000にアクセス。ブラウザ上でアプリケーションが確認できれば完成です。

これでrailsアプリをDocker化する手順は以上です。お疲れ様でした。
ブランチを別にし、mainにpull&mergeするやり方もできます。

よくあるエラー

Dockerfile や docker-compose.yml にて、Rubyやrailsのバージョン同士に適正があるので、組み合わせとして相応のものを記述してください。詳しくは下のサイトにあります。

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?