はじめに
dockerとdocker composeでrailsアプリをDocker化する方法について記載します。
dockerとdocker composeについては勉強している程で記載しています。
Dockerおすすめ本
下記勉強に使用した本ですが、初学者でも分かりやすかったので共有します。
Docker&仮想サーバー完全入門 Webクリエイター&エンジニアの作業がはかどる開発環境構築ガイド
構築環境
Ruby 3.2.2
Rails 7.0.6
postgres 12
①必要ファイルの作成を行う
以下の4つのファイルの作成が必要です。
- Dockerfile
FROM ruby:3.2.2
RUN apt-get update -qq && apt-get install -y \
build-essential \
libpq-dev \
nodejs
WORKDIR /myapp
COPY Gemfile Gemfile.lock /myapp/
RUN bundle install
ADD . /myapp
- compose.yaml
services:
db:
image: postgres:12
volumes:
- .:/myapp
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres5050"
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
- Gemfile
- Gemfile.lock
②コンテナのイメージ作成
コンテナを作成するためにはイメージが必要となります。
docker compose buildでイメージを作成します。
docker compose build
③database.yamlの変更
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: postgres5050
pool: 5
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
④コンテナの作成と起動
docker compose up -d
⑤DBの作成とマイグレーション
docker-compose run web rake db:create db:migrate
⑥localhost:3000でアクセスする
localhost:3000(設定したポート番号)でアクセスすると、WEBアプリケーションが起動します。
さいごに
Dockerは使ったことがありませんでした。実際に使ってみると通常の環境構築よりもかなり時短になると感じました。
他にも色んな環境のDocker構築をして徐々に慣れていきたいと思います。
参考文献