📝

楽にdocker-composeでRailsの環境構築する方法のメモ

2021/12/08に公開

久しぶりにRailsの環境構築したのでメモも兼ねて

1. プロジェクト用のディレクトリを作成、移動

mkdir ~/hoge && cd ~/hoge

2. Rubyコンテナを起動するため、docker-compose.yml、Dockerfileを用意

docker-compose.yml
version: "3.9"

volumes:
  db-data:

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    command:
      tail -f /dev/null
    volumes:
      - .:/app
    depends_on:
      - db
  db:
    image: postgres:14.1
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: db_name
      POSTGRES_USER: user_name
      POSTGRES_PASSWORD: password
      POSTGRES_HOST_AUTH_METHOD: trust
Dockerfile
FROM node:17.2.0 as node

FROM ruby:3.0.3
COPY --from=node /usr/local/bin/node /usr/local/bin/node
COPY --from=node /opt/yarn-* /opt/yarn
RUN ln -fs /opt/yarn/bin/yarn /usr/local/bin/yarn && \
  apt-get update && \
  apt-get install -y libpq-dev && \
  apt-get clean && \
  rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . .
CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]

3. コンテナ起動、接続

docker-compose up -d
docker-compose exec app bash

4. Railsのインストール、

gem install rails -v 6.1.4
rails new .

5. Railsの依存関係関連の記述の追加

Dockerfile
FROM node:17.2.0 as node

FROM ruby:3.0.3
COPY --from=node /usr/local/bin/node /usr/local/bin/node
COPY --from=node /opt/yarn-* /opt/yarn
RUN ln -fs /opt/yarn/bin/yarn /usr/local/bin/yarn && \
  apt-get update && \
  apt-get install -y libpq-dev && \
  apt-get clean && \
  rm -rf /var/lib/apt/lists/*
WORKDIR /app
+ COPY Gemfile Gemfile.lock ./
+ RUN bundle -j4
+ COPY package.json yarn.lock ./
+ RUN yarn
COPY . .

CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]

いいところ

悪いところ

  • アプリ名がAppになってしまう

Discussion