前提
この手順は、Linux 環境(WSL を含む)を前提としています。ディストリビューションは Ubuntu を想定していますが、Debian 系であれば問題ありません。
はじめに
Dockerがなかった頃、たとえば
「フレームワークはRuby on Rails、バックエンドはPostgreSQLで環境構築しておいて」
と言われたらどう感じるでしょうか?
ある程度環境構築に慣れている人なら、
- ベースとなる言語をインストールして
- フレームワークの公式を見ながらセットアップして
- データベースやその他の設定も整えて、困ったら調べながらなんとか進める
と、なんとなく流れはつかめていると思います。
ただ、慣れていない人にとっては、環境構築だけで詰まってしまい、かなりの時間を消耗してしまうこともあります。
実際の現場では一人で開発することは少なく、多くはチームでの開発になります。
そうなると、開発環境の違いによってアプリケーションが動いたり動かなかったり、というズレが発生してしまいます。
- フレームワークのバージョンが人によって違う
- データベースの設定が環境ごとに異なる
- インストールしているパッケージに差異がある
といったことが起こると、誰かの環境では正常に動作しても、別の人の環境ではエラーになるといったことが普通に起こります。
Dockerが解決してくれること
Dockerを使えば、こうした環境差の問題を解決できます。具体的には、
- チームで同じ開発環境を共有できる
- 環境構築の手間を最小限にできる
といったメリットがあります。
今回やること
以下のリポジトリを使って、Rails開発環境をDockerで構築していきます。
https://github.com/arunbababa/rails7_docker_template
もちろんこのリポジトリをそのままローカルでセットアップしても動作はしますが、Dockerで整備する方が圧倒的に楽になります。
1. 事前準備:必要なアプリケーションの確認
以下のアプリケーションがインストールされていることを確認してください。コマンドでバージョンが表示されれば問題ありません。
-
Docker
バージョンが表示されない場合は、こちらからインストールしてください。
-
Docker Compose
バージョンが表示されない場合は、こちらからインストールしてください。
-
Git
バージョンが表示されない場合は、こちらからインストールしてください。
2. リポジトリのクローン
git clone https://github.com/arunbababa/rails7_docker_template
cd rails7_docker_template
3. Dockerfileの作成
プロジェクトのルートディレクトリに以下の内容でDockerfile
を作成します。
FROM ruby:3.2.2
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
nodejs
RUN mkdir /rails-docker
WORKDIR /rails-docker
COPY Gemfile Gemfile.lock /rails-docker/
RUN bundle install
4. docker-compose.ymlの作成
同じくルートディレクトリに以下の内容でdocker-compose.yml
を作成します。
version: '3'
volumes:
db-data:
services:
web:
build: .
command: bash -c "rails db:create db:migrate && rails server -b 0.0.0.0"
ports:
- '3000:3000'
volumes:
- '.:/rails-docker'
environment:
- 'POSTGRES_PASSWORD=postgres'
tty: true
stdin_open: true
depends_on:
- db
links:
- db
db:
image: postgres
volumes:
- 'db-data:/var/lib/postgresql/data'
environment:
- 'POSTGRES_USER=postgres'
- 'POSTGRES_PASSWORD=postgres'
5. database.ymlの修正
config/database.yml
を以下のように書き換えます。
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
port: 5432
password:
pool:
development:
: *default
database: rails-docker_development
test:
: *default
database: rails-docker_test
6. 起動してみよう
準備ができたら、ルートディレクトリで以下のコマンドを実行します。
そしてブラウザで以下を入力します。
すると、以下のような画面が表示されるはずです。
おわりに
今回用意したアプリケーション自体はとてもシンプルなものですが、重要なのはそこではありません。
docker-compose up
という一つのコマンドでアプリケーションが立ち上がる、
この状態をチームで共有できるということに大きな価値があります。
新しくチームに参加した人も、
- リポジトリをクローンして
- docker-compose up するだけ
で、すぐに開発を始められるようになります。
今回は雰囲気をつかんでもらうことを目的に、Dockerfileやdocker-compose.ymlの細かい中身や、database.ymlの書き換え理由には触れませんでしたが、「どんなことができるのか」は体感できたのではないでしょうか。
Views: 1