docker-composeを利用してRailsアプリ開発を楽にしよう

ていうのをうなすけさんに相談したら、解決策を示してくれたのでそれを開発向けに変えてみた。 Dockerとdocker-composeはみなさんごぞんじだと思うので割愛します。

はじめに

Railsアプリ用 Dockerfile を準備します。こちらは、元記事と同じで良いとおもいますが、元記事ではすべての条件を満たすために、不要な DB やミドルウェアのライブライをインストールしてますので必要なものだけにします。 このRailsアプリでは、DB として postgres を利用していますので関連のライブラリをインストールします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
FROM ruby:2.5.3-stretch

ARG NODE_MAJOR_VER=11
ARG BUNDLER_JOBS=4

RUN curl -sL https://deb.nodesource.com/setup_${NODE_MAJOR_VER}.x | bash - \
  && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
  && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
  && apt update && apt install --assume-yes \
    postgresql-contrib \
    libpq-dev \
    libxml2 \
    libxml2-dev \
    libxslt1-dev \
    git \
    make \
    nodejs \
    yarn \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*

WORKDIR /rails
COPY . .
RUN bundle install --jobs=${BUNDLER_JOBS}
RUN yarn install

同様に docker-compose.yml を必要なものだけにします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: '3'
services:
  rails:
    build: .
    command: /bin/bash
    environment:
      - NODE_MAJAR_VER=11
      - BUNDLER_JOBS=4
      - DB_HOST=postgres
    volumes:
      - ".:/rails"
    links:
      - postgres
    command: ["bundle", "exec", "rails", "s", "-b", "0.0.0.0"]
    ports:
      - "3000:3000"
  postgres:
    image: postgres:11.1-alpine
    ports:
      - "5432:5432"

こちらも postgres だけにします。

おわり

あとは docker-compose up rails とし、実行することで見れるようになっています。