LoginSignup
4
4

More than 3 years have passed since last update.

Docker+rails環境開発

Last updated at Posted at 2020-04-25

※雑メモです

はじめに

久しぶりです。私は相変わらずエンジニアをしています。ちなみにフロントエンドはReact + TypeScriptです。あとバックエンドもちょっと(rails)。私の現場のバックエンドがrailsなので、バックエンドについていろいろまとめようかなと。この記事では最初の肝である「環境構築」です。

※結構簡易的に書いてます。雑です。ご了承ください。

事前準備

Docker

公式サイトよりダウンロードしてください。

1.ディレクトリ作成

$ mkdir docker-rails-sample
$ cd docker-rails-sample

2.Dockerfile記述

FROM ruby:2.6.3

# 必要なパッケージのインストール
RUN apt-get update -qq && \
    apt-get install -y build-essential \ 
                       libpq-dev \        
                       nodejs
RUN mkdir /docker-rails-sample
ENV APP_ROOT /docker-rails-sample
WORKDIR $APP_ROOT

ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock

RUN bundle install
ADD . $APP_ROOT

ここで以前、私が書いた記事でもあるのですが、Dockerのコマンドですが

  • ENV ... 環境変数の設定
  • WORKDIR ... ワーキングディレクトリの設定
  • COPY ... ファイルをイメージにコピー
  • RUN ... コマンド実行

3.Gemfileを作る

$ vi Gemfile
source 'https://rubygems.org'
gem 'rails', '5.2.2'

4.空のGemfile.lockを作る

rubymineで作業していたら勝手に作成された?のですが、docker-buildする際に必要なので。

Gemfile.lock
$ touch Gemfile.lock

5.docker-compose.ymlを作成

MYSQL_ROOT_PASSWORDMYSQL_DATABASEを設定

(私はpasswordとかいうやばいパスワードで)

$ vi docker-compose.yml
docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    ports:
      - "3306:3306"

  web:
    build: .
    command: rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app_name
    ports:
      - "3000:3000"
    links:
      - db

6.railsを実行

$ docker-compose run web rails new . --force --database=mysql

7.database.yml

passwordとhostを設定する。

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password
  host: db

8.Docker起動

$ docker-compose build
$ docker-compose up

9.DB作成

$ docker-compose run web rails db:create

あとはlocalhost:3000にアクセスすればOK。

以上、雑メモでした。

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