LoginSignup
1
1

More than 3 years have passed since last update.

docker - docker-compose で [ Ruby on Rails + MySQL ] のローカル開発環境を作ってみた

Last updated at Posted at 2019-08-31

はじめに

Rails をローカルでお手軽に開発出来る環境を作りたくて情報を整備してみました。

概要

ホストOSの上に、Vagrant で操作する VirtualBox を導入し、その上に Docker / docker-compose が動作する CentOS を用意して、そこで Rails と MySQL が動作するようにします。

システムの全体像

システム構成

このコードは次のようなシステム構成において、Application Server にて実行されることを想定しています。

image.png

ソフトウェア・スタック

開発環境は次のようなソフトウェア・スタックです。

image.png

これらは以下のバージョン構成で動作確認しています。

項目 内容
VirtualBox 5.2.22 r126460 (Qt5.6.3
Vagrant Vagrant 2.2.0
CentOS CentOS Linux release 7.6.1810 (Core)
Docker Docker version 19.03.1, build 74b1e89
docker-compose docker-compose version 1.17.1, build 6d101fb
Ruby 2.5.3
Ruby on Rails Rails 5.2.2
bundler Bundler version 2.0.2
MySQL 5.7

手順

ここからが構築手順です。

0. 事前準備

Docker / docker-compose を自動でインストールする vagrant の起動スクリプトを用意してあるので、仮想環境の構築はこれを実行するだけです。

Command:ホストOSで実施

# Vagrant のプラグインをインストールする
vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-proxyconf

# GitHub から Vagrantfile と provision.sh を取得する
git clone https://github.com/anfangd/docker-on-vagrant-script.git

# 適当に名前を変えて カレントディレクトリ を変更
mv docker-on-vagrant-script centos-7-docker
cd centos-7-docker

# Vagrant の起動する
vagrant up

# 仮想環境へ ssh でアクセスする
vagrant ssh

起動した仮想環境内で、 Docker と docker-compose をコマンド操作できるか確認します。

Command:VirtualOSで実施
# docker の動作確認をする
docker run hello-world

# docker のバージョン確認をする
docker --version
Docker version 18.06.1-ce, build e68fc7a

# docker-compose のバージョン確認をする
docker-compose --version
docker-compose version 1.17.1, build 6d101fb

1. 構築用スクリプトの取得

作業用のフォルダを作成し、GitHub からコンテナ構築用のスクリプトを取得します。

Command
# ホストOSと同期しているフォルダへ移動し、作業用フォルダを作成
cd /vagrant
mkdir workspace && cd &_

# docker-compose のスクリプトを取得し、適当なフォルダ名に変更
git clone https://github.com/anfangd/rails-by-docker-compose.git
mv rails-by-docker-compose rails-project
cd rails-project

取得したコードは次のような構成になっています。

Command
tree
├── docker-compose.yml
├── .env
├── mysql
│   ├── Dockerfile
│   ├── conf
│   │   └── etc
│   │      └── my.cnf
│   └── data
└── rails
    │── Dockerfile
    └── src
        │── Gemfile
        └── Gemfile.lock

2.初期プロジェクトの作成 と DBアクセス設定

次のコマンドで Rails のプロジェクトを新規作成します。

docker-compose run web rails new . --force --database=mysql --skip-bundle

database.yml を修正し、 Rails アプリケーションから DBホストへの接続情報を設定します。

rails/src/config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: root
  host: db

3.スクリプトを実行してコンテナを起動

次のコマンドを実行して、Dockerコンテナを起動します。

Command
# ビルドする
docker-compose build

# 起動する
docker-compose up -d

4. マイグレーションの実施

Rails を使用してマイグレーションを実行します。

Command
docker-compose exec web rails db:create

5.アクセス確認

次のURL へアクセスし、動作を確認します。

hostname は適切な値に変更します。

6.後始末

次のコマンドで環境を破棄します。

Command
docker-compose down

参考

docker-compose の基本事項

Docker の デフォルト Network 名について

Docker と docker-compose の環境変数について

docker-compose と MySQL

1
1
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
1
1