はじめに
今回はホストで作成して、GitHub上にあるWebアプリをDockerのコンテナ上で動かすまでのステップを解説します。
各種バージョン
- Docker 24.0.6
- Ruby: 3.2.2
- Ruby on Rails: 7.0.6
- Postgres: 12
開発環境
- CPU: Apple M1
- OS: macOS Sonoma バージョン14.6
※Windowsなど他のOSやCPUでの動作確認は行なっていません。
- GitHubアカウントの作成
- Docker Desctopのインストール
上記2点は済ませてあるという前提で進めます。
Docker化の手順
1. リモートリポジトリからリポジトリをクローン
ローカル環境の任意の位置でgit cloneをしましょう
git clone https://github.com/<ユーザ名>/<リポジトリ名>.git
2. 必要なファイルを新規作成と編集
- Dockerfileとdocker-compose.ymlを作成
Dockerfile
FROM ruby:3.2.2
RUN apt-get update -qq && apt-get install -y \
build-essential \
libpq-dev \
nodejs \
postgresql-client
COPY . /rails-docker
ENV APP_HOME /rails-docker
WORKDIR $APP_HOME
RUN bundle install
Dockerfileで書かれている命令文が分からなかったので、以下の表にまとめました。
命令 | 内容 |
---|---|
FROM | コンテナのベースのイメージを指定 |
RUN | ビルド時に実行するコマンド |
COPY | ソースコードや設定ファイルを ローカルからDocker imageにコピー |
ENV | 環境変数を設定 |
WORKDIR | コンテナ内の作業ディレクトリを指定 |
docker-compose.yml
# バージョンを選定
version: '3'
services:
# dbコンテナ
db:
image: postgres:12
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- postgresql-data:/var/lib/postgresql/data
# webコンテナ
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
ports:
- '3000:3000'
volumes:
- '.:/rails-docker'
depends_on:
- db
volumes:
postgresql-data:
driver: local
- config/database.ymlを編集
database.yml
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: postgres
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
3. 動作確認
-
イメージの作成
docker-compose build
-
DB作成
docker-compose run web rake db:create docker-compose run web rails db:migrate
-
コンテナ作成&起動
docker-compose up
-
出力確認
http://localhost:3000にアクセス