概要
DockerでRails5に対応したRuby on Railsの環境構築を行いました。
このクィックスタートでは Docker Compose を使って、
簡単な Rails/PostgreSQL アプリを設定することができます。
学んだ一連の流れをまとめておきます。
(一番下にDockerのコマンド一覧も掲載しております!)
前提としてDockerとcomposeのインストールができている状態とします。
まだの人はこちらを参考にして下さい。
・【図解】Dockerの全体像を理解する -前編-
・いまさらだけどDockerに入門したので分かりやすくまとめてみた
・【入門】はじめての Docker Desktop for Mac のインストールと CentOS の仮想環境構築のセットアップ
環境
・MacOS Apple M1 バージョン11.4
・Docker 20.10.7
・Ruby 2.5.9
・Rails 5.2.6
ー参考資料ー
・公式ドキュメントQuickstart: Compose and Rails
・クィックスタート: Compose と Rails
・DockerのQuickstart:Compose and Railsをやってみた
手順
インストールができている確認
% docker version
Client:
Cloud integration: 1.0.17
Version: 20.10.7
API version: 1.41
Go version: go1.16.4
Git commit: f0df350
Built: Wed Jun 2 11:56:23 2021
OS/Arch: darwin/arm64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: b0f5bc3
Built: Wed Jun 2 11:55:36 2021
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.4.6
GitCommit: d71fcd7d8303cbf684402823e425e9dd2e99285d
runc:
Version: 1.0.0-rc95
GitCommit: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
docker-init:
Version: 0.19.0
GitCommit: de40ad0
% docker compose
Docker Compose version v2.0.0-beta.6
Dockerを使ったRuby on Railsの環境構築
Dockerとcomposeのインストールが完了したのでDockerを用いたRuby on Railsの環境構築を行います。
DockerでRuby on Railsの環境を構築するプロジェクトのディレクトリを作成し移動します。
今回はmyappとします。
% cd myapp
4つのファイルを準備
⑴ docker-compose.yml
⑵ Dockerfile
⑶ Gemfile
⑷ Gemfile.lock
⑴ docker-compose.yml
docker-compose.ymlというファイル名をVScodeに作成します。
以下を記述↓↓
version: '3'
services:
db:
image: postgres
environment:
- POSTGRES_PASSWORD=password
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
⑵ Dockerfile
次に、Dockerfileというファイル名をVScodeに作成します。
以下を記述↓↓
FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
これでDockerを動かす記述が完了しました。
⑶ Gemfile
次に、Gemfileというファイル名をVScodeに作成します。
以下を記述↓↓
source 'https://rubygems.org'
gem 'rails', '5.2.6'
⑷ Gemfile.lock
次に、Gemfile.lockというファイル名をVScodeに作成します。
この時、Gemfile.lockは空にしておきます。
# 記述なし
これで4つのファイルの作成が完了しました。
上記4つのファイルを作ったうえで、コマンドをうっていきます。
% docker-compose build
これでDockerfileのファイル内の記述を実行します。
次に以下のコマンドでrails new をします。
% docker-compose run web rails new . --force --database=postgresql
これでダウンロードが完了したら、次にGemfileが更新されたので
再度以下のコマンドを実行します。
% docker-compose build
Ruby on RailsのDB設定
config/database.yml を以下に書き換えます。
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: password
pool: 5
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
production:
<<: *default
database: myapp_production
username: myapp
password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
DBを作成
次に書き換えたDBを作成します。
% docker-compose run web rails db:create
コンテナを起動
最後にコンテナを起動させます。
% docker-compose up
http://localhost:3000/ にアクセスします。
この画面が出てきたら成功です!
これでDockerでRuby on Railsの環境構築が完了です!
簡単な Rails/PostgreSQL アプリを設定することができました!
以下はDokerの開発に必要なコマンド一覧を残しておきます。
Dockerで使用するコマンド一覧
コマンド | 動作 | 補足 |
---|---|---|
docker ps | 稼働コンテナの一覧表示 | |
docker ps -a | すべてのコンテナを表示 | |
docker run | コンテナの生成/起動 | |
docker stats | コンテナの稼働確認 | |
docker start | コンテナの起動 | |
docker stop | コンテナの停止 | |
docker restart | コンテナの再起動 | |
docker rm | コンテナの削除 | |
docker pause | コンテナの中断/再開 | |
docker version | Dockerのバージョン確認 | |
docker info | Dockerの実行環境確認 | |
docker commit | コンテナからイメージ作成 | |
docker save | イメージの保存 | |
docker build -t | DockerfileからDockerイメージの作成 |
以上となります。
Dockerコマンドはまだまだたくさんあります。
今後、Dockerの開発が進むにつれて、都度更新していきます。
学習頑張っていきましょう!!