2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker環境でRailsアプリケーションを作成する(MySQL)

Posted at

今回の目的

Docker環境でRailsアプリケーションを作成する
DBはMySQL

環境

Ruby 2.5.1
Rails 5.2.0
MySQL

事前準備

Dockerのインストールが必要です。もしまだ行なっていない場合は下記など
ご参考にインストールを完了しましょう。
Dockerのインストールやってみた(Mac)

手順

下記参考ページをもとに進めていきます。

参考ページの確認

Docker初心者がRails+MySQLの環境構築をDockerでやってみた
http://blog.howtelevision.co.jp/entry/2018/07/17/190652

プロジェクトの作成

まずはプロジェクトを作成しましょう。
今回の例ではdesktopに作成します。
もし他に作成したい場合は、適宜読みかえていただけたらと思います。

//カレントディレクトリへ移動
cd
 
//desktopへ移動
cd desktop

//プロジェクトフォルダの作成(作成したいプロジェクト名)
mkdir rails-sample

//作成したプロジェクトフォルダの移動
cd rails-sample

設定ファイルの作成

設定ファイルを作成していきます。
プロジェクトフォルダをエディタで開いて進めていきます。

スクリーンショット 2019-06-01 18.03.48.png

まずは「Dockerfile」という名前でファイルを作成しましょう。
そしてファイルには参考ページに記載されている下記を記載し、保存します。

FROM ruby:2.5.1
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential mysql-client nodejs
RUN gem install bundler
WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install
ENV APP_HOME /myapp
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME

# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000

# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]

続いて「Gemfile」というファイル名でファイルを作成し、
こちらも参考ページの下記記載をし、保存します。

source 'http://rubygems.org'
gem 'rails', '~> 5.2.0'

続いて「Gemfile.lock」というファイル名でファイルを作成します。
こちらは中身は空のままで大丈夫です。
ターミナルで「touch Gemfile.lock」としても作成可能です。

続いて「entrypoint.sh」というファイル名でファイルを作成します。
こちらも参考ページの下記記載をし、保存します。

entrypoint.sh
# !/bin/bash
set -e

# Remove a potentially pre-existing server.pid for Rails.
rm -f /myapp/tmp/pids/server.pid

# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"

続いて「docker-compose.yml」というファイル名でファイルを作成します。
こちらも参考ページの下記記載をし、保存します。

docker-compose.yml
version: '3.4'
services:
  db:
    image: mysql:5.7.17
    ports:
      - "3306:3306"
    volumes:
      - ./docker/mysql/volumes:/var/lib/mysql
    env_file: .env.dev
  web:
    build:
      context: .
      dockerfile: ./docker/rails/Dockerfile
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    ports:
      - "3000:3000"
    volumes:
      - .:/myapp
    environment:
      RAILS_ENV: development
    env_file: .env.dev
    depends_on:
      - db

ここまで終わると下記のようなファイル構成になっているはずです。
スクリーンショット 2019-06-01 18.15.22.png

プロジェクトを構築

ここまで終わりましたらプロジェクトの構築を行なっていきます。
ターミナルで下記コマンドを実行します。

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

問題なくコマンドが実行されましたら、下記コマンドを実行しましょう。

docker-compose build

データベースの作成とアプリケーションの実行

続きまして、データベースの作成とアプリケーションの実行を行なっていきます。
「config/database.yml」の内容を参考ページの記載の通り下記に置き換えます。
スクリーンショット 2019-06-01 18.22.07.png

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: <%= ENV['MYSQL_ROOT_PASSWORD'] %>
  host: db

development:
  <<: *default
  database: development

「database.yml」の全ての内容を選択して、上記をペーストしないように注意しましょう。
「default」と「development」の部分だけ変更です。

終わりましたら、ターミナルで下記コマンドを実行しましょう。

docker-compose up

上記そのままで、別タブ(Command + T)を開き、下記コマンドを実行し、データベースを作成します。

docker-compose run web rake db:create

ブラウザでRailsのウェルカム画面が表示されれば、完了です!!
正常に表示されない場合は、下記コマンドを試してみましょう。

docker-compose down
docker-compose up
スクリーンショット 2019-06-01 18.35.09.png

お疲れ様でした!!!

アプリケーションを停止する

下記コマンドで停止しましょう。「Command + C」とかはやめた方がいいです。

docker-compose down

以上です。
いいねやQiitaやTwitterのフォローいただけると励みになります!
お気軽にどうぞ〜

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?