🦎

Docker✖️Reactの環境構築

2023/12/23に公開

はじめに

こちらに移行しました🙇
https://kubodai-code.com/spring-react5/

バックエンドにSpringBoot3(REST API)フロントエンドにReactを使用してWebアプリケーションを作っていきます。
勉強も兼ねて記録に残したいと思いますので誰かの役に立てば嬉しいです😊

今記事の目標

前回はDockerComposeを使用して実際にSpringBootを起動するところまで実施しました。
今回はReactを動かすDockerfileとdocker-compose.ymlを作成していきたいと思います。
今回からはフロントエンドの環境構築をしていきます。
https://zenn.dev/pandaman/articles/0baaaa211a9ead

環境について

  • react 18.2.0
  • Typescript 4.9.5
  • Node.js 21
  • macOS Sonoma 14.1.1
  • Docker Desktop 4.18.0

Dockerfileを作成する

プロジェクトフォルダを作成する

今回作業していくフォルダを作成します。
私の場合は~/develop配下で作業をしていきたいので以下のようにしてプロジェクトフォルダを作成し、プロジェクトフォルダ配下に移動します。

% mkdir ~/develop/share-favplace-front
% cd ~/develop/share-favplace-front

プロジェクトフォルダ配下にDockerfileを作成する

下記コマンドでDockerfileを作成します。

share-favplace-front % touch Dockerfile

Dockerfileの編集

Dockerfileを編集していきます。

share-favplace-front/Dockerfile
FROM node:20-alpine

ARG WORKDIR

ENV HOME=/${WORKDIR} \
    LANG=C.UTF-8 \
    TZ=Asia/Tokyo \
    HOST=0.0.0.0 \

WORKDIR ${HOME}

FROM <ベースイメージ>

使用するイメージを指定します。今回はnode:21-bullseye-slimのイメージを指定しています。

ARG <変数名>

Dockerfile内で使用する変数名を指定します。
「docker-compose.yml」内のargsでセットした値がここに入ります。

ENV <変数名=値>

Dockerイメージで使用する環境変数を指定します。
ENVを使って設定した環境変数は、イメージからコンテナへ渡されます。
コンテナへ渡されると、コンテナ内で起動したアプリケーションで参照することができます。

WORKDIR <ディレクトリパス>

コンテナ内の作業ディレクトリを指定します。

COPY <ローカルのファイルパス> <Dockerのファイルパス>

ローカルファイル(自分のPC上にあるファイル)をDcoker環境にコピーする命令です。

COPY. ./

カレントフォルダ(Dockerfileがあるフォルダ)配下をDocker環境のWORKDIR(/app)配下にコピーするという命令になります。

./はWORKDIRからの相対パスを指定しており、絶対パスの/appと記述するのと同じことです。

docker-compose.ymlを作成する

下記コマンドでdocker-compose.ymlを作成します。

share-favplace-front % touch docker-compose.yml

docker-compose.ymlの編集

docker-compose.ymlを編集していきます。

share-favplace-front/docker-compose.yml
version: "3.9"
services:
  front:
    build:
      context: .
      args:
        WORKDIR: ${WORKDIR}
    container_name: share-favplace-front
    env_file:
      - ./environment/react-app-variables.env
    command: npm run start
    volumes:
      - .:/${WORKDIR}
    ports:
      - "${FRONT_PORT}:${FRONT_PORT}"

今回は1つのコンテナを作成します。

front
Reactを動かすフロント用のコンテナです。

項目説明

それぞれの項目の詳細については以下を参照してください。
https://zenn.dev/pandaman/articles/0baaaa211a9ead

.envファイルを作成する

docker-compose.ymlで参照している環境変数を登録していきます。
下記コマンドで.envを作成します。

share-favplace-front % touch .env

.envの編集

WORKDIR=app
FRONT_PORT=3000
API_PORT=8080

以上で、Reactを起動するための環境構築は完了です。

まとめ

今回はReactを起動するためのDockerfileとdocker-compose.ymlを作成しました。
次回はDocker環境にReactプロジェクトを作成し、起動していきたいと思います。

Discussion