0
0

More than 1 year has passed since last update.

既存RailsアプリをDockerで環境構築する方法

Last updated at Posted at 2023-04-15

本内容は、既存Railsアプリがあることを前提に、マルチステージビルドでDockerの開発環境を構築する手順です。DBはPostgresです。

マルチステージビルドについては、下記の記事を参考にしてください。

事前準備

  • dockerを使用できる状態にしておく
  • railsアプリを用意しておく

dockerファイル準備

まず初めにrailsアプリがあるディレクトリでDockerfile``docker-compose.ymlを作成する。

  • Dockerfileの作成
Dockerfile
FROM node:12 as node
FROM ruby:3.0.2

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev

COPY --from=node /usr/local/bin/node /usr/local/bin/
COPY --from=node /opt/yarn-* /opt/yarn/
COPY --from=node /usr/local/lib/node_modules /usr/local/lib/node_modules

RUN ln -fs /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm \
    && ln -fs /usr/local/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx \
    && ln -fs /opt/yarn/bin/yarn /usr/local/bin/yarn \
    && ln -fs /opt/yarn/bin/yarnpkg /usr/local/bin/yarnpkg

RUN mkdir /repogitory_name
WORKDIR /repogitory_name

ADD Gemfile /repogitory_name/Gemfile
ADD Gemfile.lock /repogitory_name/Gemfile.lock
RUN bundle install

ADD package.json yarn.lock /repogitory_name/
RUN yarn install --check-files

ADD . /repogitory_name

  • docker-compose.ymlの作成
docker-compose
version: '3'
services:
  db:
    image: postgres:14.6-alpine
    environment:
      - POSTGRES_PASSWORD=password
  web:
    image: repogitory_name:latest
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/repogitory_name
    ports:
      - "3000:3000"
    environment:
      - POSTGRES_PASSWORD=password
    depends_on:
      - db

DATEBASEの設定

  • config/database.yml内の設定をpostgresに書き換える
database.yml
default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: <%= ENV['POSTGRES_PASSWORD'] %>
  pool: 5

development:
  <<: *default
  database: myproject_development

test:
  <<: *default
  database: myproject_test

railsアプリの設定

Gemfileファイルの設定

  • rubyバージョンがDockerfileと同じか確認する(違う場合はDockerfile側を修正)
ruby '3.0.2'
  • posetgresの設定を追加
# Use postgres as the database for Active Record
gem 'pg'

起動・確認

railsアプリをビルドする

$ docker-compose build

railsアプリのデータベースを作成し、テーブルを作成する

$ docker-compose run web rails db:create db:migrate

railsアプリ起動

$ docker-compose up

ブラウザで、 http://127.0.0.1:3000/ にアクセスし、railsアプリの画面が表示されていればOK

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