#書いてあること
・ Docker+Ruby on rails5での環境構築の手順
・ gitの初期設定とGitHubの連携
こちらを参考にしています。
詳しく知りたい方はこっちを参考にしてくださいhttps://qiita.com/azul915/items/5b7063cbc80192343fc0
メモ程度にしか書いてません。。。
#環境
・mac OS Catalina バージョン 10.15.2
・iTerm2
・Visual Studio code バージョン: 1.41.1
・Ruby 2.6.3
・rails5.2.2
#ファイル構成
ワークスペース(自分のファイル内が以下のようになります)
sampleApp ---- Dockerfile
|-- Gemfile
|-- Gemfile.lock
|-- README.md
|-- Rakefile
|-- app
|-- bin
|-- config ---- application.rb
| |-- boot.rb
| |-- cable.yml
| |-- credentials.yml.enc
| |-- database.yml
| |-- environment.rb
| |-- environments
| |-- initializers
| |-- locales
| |-- master.key
| |-- puma.rb
| |-- routes.rb
| |-- spring.rb
| |-- storage.yml
|
|-- config.ru
|-- db
|-- docker-compose.yml
|-- lib
|-- log
|-- package.json
|-- public
|-- storage
|-- test
|-- tmp
|-- vendor
#1.プロジェクトの作業ディレクトリを作成し移動
$mkdir sampleapp
$cd sampleapp
#2.作業ディレクトリでDockerfileを作成・編集
自分はvscodeを使用しているためターミナルに code Dockerfile
としているが、自分のエディタで作業ディレクトリに移動して、ファイルを作成し、編集しても同じなので、よろしくお願いします。
$ code Dockerfile
# コピペでOK, app_nameもそのままでOK
# 19.01.20現在最新安定版のイメージを取得
FROM ruby:2.6.3
# 必要なパッケージのインストール(基本的に必要になってくるものだと思うので削らないこと)
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs
# 作業ディレクトリの作成、設定
RUN mkdir /app_name
##作業ディレクトリ名をAPP_ROOTに割り当てて、以下$APP_ROOTで参照
ENV APP_ROOT /app_name
WORKDIR $APP_ROOT
# ホスト側(ローカル)のGemfileを追加する(ローカルのGemfileは3.で作成)
ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock
# Gemfileのbundle install
RUN bundle install
ADD . $APP_ROOT
#3.Gemfileを作成・編集
こちらもエディタでファイルを作成して、編集してもらって大丈夫です。
GemfileはBunder用の設定ファイルでこれを元にgemの依存関係を示した、Gemfile.lockを作成します
$code Gemfile
source 'https://rubygems.org'
gem 'rails', '5.2.2'
#4.空のGemfile.lockを作成する
エディタで作成するだけでもOKです。
$ touch Gemfile.lock
#5.docker-compose.ymlを作成・編集
ymlファイルを以下の例をコピペして作成、MYSQL_ROOT_PASSWORDとMYSQL_DATABASEで、任意のパスワード(7.で同じものを設定する)とデータベース名を設定
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: root
ports:
- "3306:3306"
web:
build: .
command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/app_name
ports:
- "3000:3000"
links:
- db
#6.rails newを実行する
$ docker-compose run web rails new . --force --database=mysql --skip-bundle
#7.database.ymlを修正する
場所は/sampleApp/config/database.yml
です。
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password # docker-compose.ymlのMYSQL_ROOT_PASSWORD
host: db # docker-compose.ymlのservice名
#8.Dockerの起動
現在のディレクトリはsampleapp
の階層で行います。
$ docker-compose build # コンテナをビルド
# -dオプションをつけてバックグラウンド実行するとこの後新しいシェルを立ち上げる必要がない
$ docker-compose up # コンテナの一斉起動
#9.DBを作成
新しいターミナルを開き/sampleapp
で実行する
$ docker-compose run web rails db:create
#10.コンテナが立ち上がってるのかを確認する
$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------
sample_db_1 Up
sample_web_1 Up
#StateがUpになっていればokです。
#11.ブラウザで確認
#12.gitとGitHubの設定
GitHub (https://github.com)
でnew repositoriesを作成しておくこと
sampleappディレクトリ内でやる
git init
git add .
git commit -m "first commit"
git remote add origin GitHubのURL
git push -u origin master
```