1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めて既存のWebアプリをDocker化してみた

Posted at

はじめに

今回はホストで作成して、GitHub上にあるWebアプリをDockerのコンテナ上で動かすまでのステップを解説します。

各種バージョン

  • Docker 24.0.6
  • Ruby: 3.2.2
  • Ruby on Rails: 7.0.6
  • Postgres: 12

開発環境

  • CPU: Apple M1
  • OS: macOS Sonoma バージョン14.6
    ※Windowsなど他のOSやCPUでの動作確認は行なっていません。
  • GitHubアカウントの作成
  • Docker Desctopのインストール
    上記2点は済ませてあるという前提で進めます。

Docker化の手順

1. リモートリポジトリからリポジトリをクローン

ローカル環境の任意の位置でgit cloneをしましょう

git clone https://github.com/<ユーザ名>/<リポジトリ名>.git

2. 必要なファイルを新規作成と編集

  • Dockerfiledocker-compose.ymlを作成
Dockerfile
FROM ruby:3.2.2

RUN apt-get update -qq && apt-get install -y \
    build-essential \
    libpq-dev \
    nodejs \
    postgresql-client

COPY . /rails-docker
ENV APP_HOME /rails-docker
WORKDIR $APP_HOME
RUN bundle install

Dockerfileで書かれている命令文が分からなかったので、以下の表にまとめました。

命令 内容
FROM コンテナのベースのイメージを指定
RUN ビルド時に実行するコマンド
COPY ソースコードや設定ファイルを
ローカルからDocker imageにコピー
ENV 環境変数を設定
WORKDIR コンテナ内の作業ディレクトリを指定
docker-compose.yml
# バージョンを選定
version: '3'

services:
# dbコンテナ
  db:
    image: postgres:12
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    volumes:
      - postgresql-data:/var/lib/postgresql/data

# webコンテナ
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    ports:
      - '3000:3000'
    volumes:
      - '.:/rails-docker'
    depends_on:
      - db
volumes:
  postgresql-data:
    driver: local
  • config/database.ymlを編集
database.yml
default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: postgres
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

3. 動作確認

  1. イメージの作成

    docker-compose build
    
  2. DB作成

    docker-compose run web rake db:create
    docker-compose run web rails db:migrate
    
  3. コンテナ作成&起動

    docker-compose up
    
  4. 出力確認
    http://localhost:3000にアクセス

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?