LoginSignup
0
0

Webアプリをdocker化する方法

Last updated at Posted at 2024-01-30

Dockerによるコンテナ作成手順

webアプリをdocker化する方法について、Dockerfileを用いる場合とdocker composeで行う場合それぞれ記載します。

Docker Desktopを既にインストール済みで起動している場合を想定しています。
まだDocker Desktopをインストールしていない場合はインストールしてから拝読ください。

Dockerfileを用いる場合

getting-started リポジトリ からアプリをダウンロードしてください。
次に下記コマンドでDockerfileを作成してください。

作業ディレクトリにDockerfileを作成
$ cd getting-started
$ touch Dockerfile

Dockerfileを下記のように編集します。

Dockerfile

Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000

Dockerfileからコンテナを立ち上げる

まず、docker buildコマンドを使ってコンテナイメージを構築します。

docker build -t getting-started .

下記コマンドでホストとコンテナのポートをそれぞれ3000に指定してコンテナを立ち上げます。
ウェブブラウザで http://localhost:3000 にアクセスするとダウンロードしたアプリが表示されます。

$ docker run -dp 3000:3000 getting-started

Docker Composeを用いる場合

まずRailsアプリを用意し、Railsアプリが配置されているディレクトリにcdコマンド等で移動してください。

Docker Composeは、複数のコンテナを用いるアプリケーションでDockerイメージのビルドやコンテナの起動、停止の操作をより簡単に行えるようにするツールです。
Docker Desktopをインストールしている場合すでに存在しています。

Dockerfileを作成

 まずは下記のようにRailsアプリの直下のディレクトリ(Gemfile等と同じ階層)にDockerfileを作成します。

Dockerfile
# Docker Hubからイメージを取得
FROM ruby:3.0.2

# ワーキングディレクトリを指定
WORKDIR /Myapp

# aptを更新し、必要なパッケージをインストールする
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client

# ホストのGemfileとGemfile.lockをコンテナの/Myappにコピー
COPY Gemfile /Myapp
COPY Gemfile.lock /Myapp

# Gemをインストール
RUN gem install bundler -v 2.3.0
RUN gem update --system

# ホストのpackage.jsonとyarn.lockをコンテナ内にコピーする
COPY package.json yarn.lock /src/

# yarnをインストール
RUN yarn install
RUN bundle install
Dockerfileと同じ作業ディレクトリでdocker-compose.ymlを作成
$ touch docker-compose.yml
docker-compose
version: '3'
services:
  db:
    image: postgres
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    # ホストのポートとコンテナのポートを紐づけ
    ports:
      - "3000:3000"
    depends_on:
      - db

Gemfileを編集

Gemfileに以下のコードを記載することでrailsでPostgreSQLを使うことが可能になります。

Gemfile
gem 'pg', '~> 0.18.4'

config/database.ymlを編集

データベースとWebアプリを接続するため、database.ymlを下記のように編集します。

database.yml
default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: postgres
  port: 5432
  pool: 5

コンテナを作成して起動

下記コマンドでコンテナを作成し、http://localhost:3000 にアクセスすることでRailsのページが表示されます。

docker compose up -d

参考

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