LoginSignup
0
0

既存のRailsのwebアプリをdocker化する方法

Posted at

今回構築したい環境

  • 既存のRailsのWebアプリをdocker化し、docker-compose upでRailsプロセスとdbが起動し、http://localhost:3000 でこのwebアプリにアクセスできるようにする。
  • Rubyのバージョンは3.2.2を使用する。
  • DBはpostgresを使用し、バージョンは12を使用する。
  • ホストのファイルシステムとコンテナのファイルシステムを同期している。

Dockerfileを作成

①下記のLinuxコマンドを実行し、空のDockerfileを作成します。

$ touch Dockerfile

②作成したDockerfileに以下のようなDockerコマンドを記述していきます。

FROM ruby:3.2.2
RUN apt-get update && apt-get install -y \
    build-essential \
    libpq-dev \
    nodejs \
    postgresql-client \
    yarn
WORKDIR /rails-docker
COPY Gemfile Gemfile.lock /rails-docker/
RUN bundle install

docker-compose.ymlを作成

①下記のLinuxコマンドを実行し、空のdocker-compose.ymlを作成します。

$ touch docker-compose.yml

②作成したdocker-compose.ymlに今回構築したい環境の情報を記述していきます。

version: '3'

volumes:
  db-data:

services:
  # railsの設定
  web:
    build: .

    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    environment:
      - 'DATABASE_PASSWORD=postgres'
    volumes:
      - '.:/rails-docker'
    ports:
      - '3000:3000'
    tty: true
    stdin_open: true
    depends_on:
      - db
    links:
      - db

  # postgresqlの設定
  db:
    image: postgres:12
    volumes:
      - 'db-data:/var/lib/postgresql/data'
    environment:
      - 'POSTGRES_USER=postgres'
      - 'POSTGRES_PASSWORD=postgres'

database.ymlに環境情報を追記

①config/database.ymlの中のdefault: &defaultに以下を追記します。

  host: db
  user: postgres
  port: 5432
  password: <%= ENV.fetch("DATABASE_PASSWORD") %>

docker imageをビルド

①下記のコマンドを実施し、docker imageをビルドします。

$ docker-compose build

docker-compose upでコンテナを起動

①下記のコマンドを実施し、コンテナを起動します。

$ docker-compose up

DB 作成

①下記のコマンドを実施し、DBを作成します。

$ docker-compose run web rake db:create

migrate を実施

①下記のコマンドを実施し、DBのmigrate を実施します。

$ docker-compose exec web bash
$ rails db:migrate

localhostにアクセスする

http://localhost:3000/ にアクセスしてrailsの画面が表示されていれば成功です。

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