今回は初めてDockerを使い、Railsアプリを作っていくことにしました。
手順をメモしておきます。
手順は以下の方を参考にさせていただいております。
[Rails] DockerでRails + MySQLの開発環境をつくる手順
開発環境はmacで、Docker for macをインストール済みです。
1.アプリを置くディレクトリを作る
2.4つのファイルを作る
3.rails new する
4.ブラウザで表示させるまで
1.アプリを置くディレクトリを作る
mkdir matatabi_app(アプリの名前)
まずはアプリを置きたいところにディレクトリ作ります。
2.4つのファイルを作る
Dockerfile docker-compose.yml Gemfile Gemfilelock
この4つのファイルをmyappの下に作っていきます
vi Dockerfile
中身はこのように書きました。
FROM ruby:2.4.1
ENV LANG C.UTF-8
RUN apt-get update -qq
RUN apt-get install -y build-essential
RUN apt-get install -y libpq-dev
RUN apt-get install -y nodejs
RUN mkdir /matatabi_app
WORKDIR /matatabi_app
ADD Gemfile /matatabi_app/Gemfile
ADD Gemfile.lock /matatabi_app/Gemfile.lock
RUN gem install bundler
RUN bundle install
ADD . /matatabi_app
続いてdocker-compose.ymlを書いていきます
vi docker-compose.yml
version: "3"
services:
web:
build: .
ports:
- "3000:3000"
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/matatabi_app
depends_on:
- db
db:
image: mysql
environment:
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: ***(passwordを書く)
ports:
- "3306:3306"
volumes:
- ./db/mysql/volumes:/var/lib/mysql
次に、Gemfileを作成
vi Gemfile
source 'https://rubygems.org'
gem 'rails', '5.1.7'
Gemfile.lock は作成のみです。
touch Gemfile.lock
これで、4つのファイルができました。ls
などして確認しておきます。
3.rails new する
rails new
しようと、以下のコマンドを打ってもうまくいきませんでした。
docker-compose run web rails new . --force --database=mysql
いろいろと調べ、一旦dockerを立ち上げてrails newすることにしました。
docker-compose up
rails new . --force --database=mysql --skip-bundle
docker-compose build
うまくいきました。
4.ブラウザで表示させるまで
rails newすることでいろいろとファイルが増えました。
その中にある database.ymlを編集します。
-----途中省略-------------------
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root ←docker-compose.ymlで書いたusernameを記入
password: *** ←docker-compose.ymlで書いたpasswordを記入
socket: /tmp/mysql.sock
host: db
-----途中省略-------------------
再度dockerを起動します。
docker-compose up
このような表示が出れば、OKです。
localhost:3000にアクセスすると
Yay! you are on rails
が表示されています!!
ここからbundle install などしていくのですが、エラーにはまってしまったので
次回に回します!
以上です!