##参考サイト
Docker超入門 :きよとのプログラミング大学
丁寧すぎるDocker-composeによるrails5 + MySQL on Dockerの環境構築(Docker for Mac)
##環境
Mac OS
docker-compose 1.27.4
Mysql 8.0
ruby 2.7
rails 6.1.0
##ファイル作成・記述
terminal.
~ % cd Desktop
Desktop % mkdir rails_on_docker
Desktop % cd rails_on_docker
rails_on_docker % tree
├── Dockerfile
├── docker-compose.yml
└── src
└── Gemfile
1 directory, 3 files
rails_on_docker % code .
###docker-compose-yml
docker-compose-yml
version: '3'
# 管理するコンテナの記述
services:
# データベース
db:
image: mysql:8.0
# Mysqlの認証設定
command: --default-authentication-plugin=mysql_native_password
volumes:
# ローカルのデータ:dockerのデータ 同期するための記述
- ./src/db/mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
# rails
web:
# ディレクトリ直下のDockerfileを参照
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
# ローカルのデータ:dockerのデータ 同期するための記述
- ./src:/app
ports:
# ローカルのポート:dockerのポート
- "3000:3000"
depends_on:
# Myaqlに接続するための記述
- db
###Dockerfile
Dockerfile
# ベースイメージの指定
FROM ruby:2.7
# 必要なライブラリのインストール
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
&& apt-get update -qq \
&& apt-get install -y nodejs yarn
# 作業ディレクトリの指定
WORKDIR /app
# ソース以下のファイルをコピー
COPY ./src /app
# rubyに必要なgemのインストール
RUN bundle config --local set path 'vendor/bundle' \
&& bundle install
###Gemfile
Gemfile
# railsのgemをインストールするための雛形
source 'https://rubygems.org'
gem 'rails','~> 6.1.0'
##railsのインストール
###使用するコマンド
terminal.
% docker-compose run <サービス> <コマンド>
railsのインストール
terminal.
rails_on_docker % docker-compose run web rails new . --force --database=mysql // dbをmysqlに指定しrailsのインストール --force(強制的に実行オプション)
.
.
.
Webpacker successfully installed 🎉 🍰
イメージのビルド
terminal.
rails_on_docker % docker-compose build
新しく作成されたdatabase.ymlに追記
database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password //記述
host: db //記述
データベースの作成
terminal.
rails_on_docker % docker-compose run web rails db:create
##起動
terminal.
rails_on_docker % docker-compose up
##まとめ
途中エラーが幾つか発生しましたが、DockerはもちろんRails,Mysqlを学ぶいい機会となりました。
次は本番環境(heroku)へのデプロイもまとめます。