LoginSignup
9
7

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-06-01

今回の目的

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

環境

Ruby 2.5
Rails 5
PostgreSQL

事前準備

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

手順

公式HPのサンプルを参考に進めていきます。
下記は2019/06/01のページをもとに進めております。
記載の変更があるかもしれませんので、ご注意ください。
ページを日本語に翻訳すると読みやすいです。

公式ページの確認

RailsとPostgreSQL
https://docs.docker.com/compose/rails/

プロジェクトの作成

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

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

//desktopへ移動
cd desktop

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

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

設定ファイルの作成

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

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

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

FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

# 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」というファイル名でファイルを作成し、
こちらも公式HPページの下記記載をし、保存します。

source 'https://rubygems.org'
gem 'rails', '~>5'

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

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

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」というファイル名でファイルを作成します。
こちらも公式HPページの下記記載をし、保存します。

docker-compose.yml
version: '3'
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

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

プロジェクトを構築

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

docker-compose run web rails new . --force --no-deps --database=postgresql

もし下記のようなエラーが出た場合は、この次のステップのコマンド(docker-compose build)を
1度実行しみてから行なってみていただけたらと思います。

Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"rails\": executable file not found in $PATH": unknown

問題なくコマンドが実行されましたら、下記コマンドを実行しましょう。
上記でエラーになって1度行なって方は、もう1回です。

docker-compose build

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

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

config/database.yml
default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password:
  pool: 5

development:
  <<: *default
  database: myapp_development


test:
  <<: *default
  database: myapp_test

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

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のフォローいただけると励みになります!
お気軽にどうぞ〜

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