108
119

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

前提

この手順は、Linux 環境(WSL を含む)を前提としています。ディストリビューションは Ubuntu を想定していますが、Debian 系であれば問題ありません。

はじめに

Dockerがなかった頃、たとえば

「フレームワークはRuby on Rails、バックエンドはPostgreSQLで環境構築しておいて」

と言われたらどう感じるでしょうか?

ある程度環境構築に慣れている人なら、

  • ベースとなる言語をインストールして
  • フレームワークの公式を見ながらセットアップして
  • データベースやその他の設定も整えて、困ったら調べながらなんとか進める

と、なんとなく流れはつかめていると思います。

ただ、慣れていない人にとっては、環境構築だけで詰まってしまい、かなりの時間を消耗してしまうこともあります。

実際の現場では一人で開発することは少なく、多くはチームでの開発になります。
そうなると、開発環境の違いによってアプリケーションが動いたり動かなかったり、というズレが発生してしまいます。

  • フレームワークのバージョンが人によって違う
  • データベースの設定が環境ごとに異なる
  • インストールしているパッケージに差異がある

といったことが起こると、誰かの環境では正常に動作しても、別の人の環境ではエラーになるといったことが普通に起こります。

Dockerが解決してくれること

Dockerを使えば、こうした環境差の問題を解決できます。具体的には、

  • チームで同じ開発環境を共有できる
  • 環境構築の手間を最小限にできる

といったメリットがあります。

今回やること

以下のリポジトリを使って、Rails開発環境をDockerで構築していきます。

https://github.com/arunbababa/rails7_docker_template

もちろんこのリポジトリをそのままローカルでセットアップしても動作はしますが、Dockerで整備する方が圧倒的に楽になります。


1. 事前準備:必要なアプリケーションの確認

以下のアプリケーションがインストールされていることを確認してください。コマンドでバージョンが表示されれば問題ありません。

  • Docker

    docker --version
    

    バージョンが表示されない場合は、こちらからインストールしてください。

  • Docker Compose

    docker-compose --version
    

    バージョンが表示されない場合は、こちらからインストールしてください。

  • Git

    git --version
    

    バージョンが表示されない場合は、こちらからインストールしてください。

2. リポジトリのクローン

git clone https://github.com/arunbababa/rails7_docker_template
cd rails7_docker_template

3. Dockerfileの作成

プロジェクトのルートディレクトリに以下の内容でDockerfileを作成します。

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

4. docker-compose.ymlの作成

同じくルートディレクトリに以下の内容でdocker-compose.ymlを作成します。

version: '3'

volumes:
  db-data:

services:
  web:
    build: .
    command: bash -c "rails db:create db:migrate && rails server -b 0.0.0.0"
    ports:
      - '3000:3000'
    volumes:
      - '.:/rails-docker'
    environment:
      - 'POSTGRES_PASSWORD=postgres'
    tty: true
    stdin_open: true
    depends_on:
      - db
    links:
      - db

  db:
    image: postgres
    volumes:
      - 'db-data:/var/lib/postgresql/data'
    environment:
      - 'POSTGRES_USER=postgres'
      - 'POSTGRES_PASSWORD=postgres'

5. database.ymlの修正

もう一つ修正すべきファイルがあります。
image.png

config/database.yml を以下のように書き換えます。

default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  port: 5432
  password: <%= ENV.fetch("POSTGRES_PASSWORD") %>
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: rails-docker_development

test:
  <<: *default
  database: rails-docker_test

6. 起動してみよう

準備ができたら、ルートディレクトリで以下のコマンドを実行します。

docker-compose up

そしてブラウザで以下を入力します。

http://localhost:3000

すると、以下のような画面が表示されるはずです。

Rails起動画面


おわりに

今回用意したアプリケーション自体はとてもシンプルなものですが、重要なのはそこではありません。

docker-compose up という一つのコマンドでアプリケーションが立ち上がる、
この状態をチームで共有できるということに大きな価値があります。

新しくチームに参加した人も、

  • リポジトリをクローンして
  • docker-compose up するだけ

で、すぐに開発を始められるようになります。

今回は雰囲気をつかんでもらうことを目的に、Dockerfileやdocker-compose.ymlの細かい中身や、database.ymlの書き換え理由には触れませんでしたが、「どんなことができるのか」は体感できたのではないでしょうか。

108
119
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
108
119

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?