2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

docker/docker composeでrailsアプリをdocker化する

Posted at

はじめに

dockerとdocker composeでrailsアプリをDocker化する方法について記載します。
dockerとdocker composeについては勉強している程で記載しています。

Dockerおすすめ本

下記勉強に使用した本ですが、初学者でも分かりやすかったので共有します。

Docker&仮想サーバー完全入門 Webクリエイター&エンジニアの作業がはかどる開発環境構築ガイド
スクリーンショット 2024-02-09 20.32.53.png

構築環境

Ruby 3.2.2
Rails 7.0.6
postgres 12

①必要ファイルの作成を行う

以下の4つのファイルの作成が必要です。

  • Dockerfile

FROM ruby:3.2.2
RUN apt-get update -qq && apt-get install -y \
    build-essential \
    libpq-dev \
    nodejs
WORKDIR /myapp
COPY Gemfile Gemfile.lock /myapp/
RUN bundle install
ADD . /myapp
  • compose.yaml

services:
  db:
    image: postgres:12
    volumes: 
      - .:/myapp
    environment:
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "postgres5050"
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
  • Gemfile
  • Gemfile.lock

②コンテナのイメージ作成

コンテナを作成するためにはイメージが必要となります。
docker compose buildでイメージを作成します。

docker compose build

③database.yamlの変更

default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: postgres5050
  pool: 5

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

④コンテナの作成と起動

docker compose up -d

⑤DBの作成とマイグレーション

docker-compose run web rake db:create db:migrate

⑥localhost:3000でアクセスする

localhost:3000(設定したポート番号)でアクセスすると、WEBアプリケーションが起動します。

さいごに

Dockerは使ったことがありませんでした。実際に使ってみると通常の環境構築よりもかなり時短になると感じました。
他にも色んな環境のDocker構築をして徐々に慣れていきたいと思います。

参考文献

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?