Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

React

【React】DockerでReactの環境構築をする

動画で解説を見る

開発環境

  • Visual Studio Code:version 1.73.0
  • OS:Windows10
  • Docker Engine:v23.0.5

DockerでReactの環境構築をする手順

DockerでReactの環境構築をする手順について解説していきます。

ディレクトリ構成

今回のディレクトリ構成は下記を目指していきます。

docker-reactディレクトリ直下にあるappディレクトリは、Reactアプリケーションが作成されるディレクトリにします。

Dockerイメージを作成するためのスクリプトファイルはdocker-react直下でも良いですが、汎用性も含めてdockerディレクトリの中にまとめていけるようにしています。

docker-compose.ymlはDockerコンテナを管理・デプロイするための設定ファイルなのでdocker-reactディレクトリ直下に配置しています。

Dockerfileを作成

まずはDockerfileを作成していきます。

dockerディレクトリの直下にDockerfileを作成し、以下のようにしてください。

ベースイメージについてはDocker Hubから探します。

nodeのDocker Official Imageから、Node.jsの長期サポート(LTS)バージョンを使用し、Alpine Linux 3.20をベースとしたイメージを使っています。

作業ディレクトリの指定については、一般的にWebアプリケーションのドキュメントルートとして使用される/var/www/htmlディレクトリを指定しています。

WORKDIRの命令以降、すべてのRUN、CMD、ENTRYPOINT、COPY、ADD命令はこのディレクトリを基準に実行されます。

最後に、Reactアプリケーションのプロジェクトテンプレートを簡単に作成するためにcreate-react-appをインストールしています。

docker-compose.ymlを作成

次にdocker-react直下にdocker-compose.ymlファイルを作成し、以下のようにしてください。

Docker Composeファイルのバージョンは3を使用し、servicesでappという名前のサービスを定義しています。

buildの設定については、イメージをビルドするためのコンテキストディレクトリはルートディレクトリを指定し、ビルドに使用するDockerfileのパスを指定します。

portsの設定については、ホストのポート3000をコンテナのポート3000にマッピングしています。

volumesの設定については、ホストマシンのディレクトリ(./app)をコンテナ内のディレクトリ(/var/www/html/app)にマウントします。

environmentの設定については、コンテナ内で使用する環境変数を設定します。

ファイルの追加・変更・削除を検知できるようにNode.jsのファイルシステムイベントを監視するライブラリであるChokidarをポーリングモードを使用するよう指示しています。

Dockerイメージをビルド

次にDockerイメージをビルドするために以下のコマンドを実行します。

cdコマンドでdocker-reactディレクトリに移動し、docker-composeコマンドでDockerイメージをビルドすると下記のような標準出力がターミナルに表示されます。

特にエラーなどがでていなければ、Dockerイメージのビルドに成功です。

Dockerコンテナ内でReactプロジェクトを作成

次にDockerコンテナ内でReactプロジェクトを作成するために、以下のコマンドを実行します。

コマンドの内容は以下の組み合わせです。

  • docker-compose run:一時的にコンテナを起動して指定したコマンドを実行
  • --rm:コマンドが終了した後、コンテナを自動的に削除
  • app:docker-compose.ymlファイル内で定義されたappを指定
  • sh -c:シェル(sh)を使って指定されたコマンドを実行
  • npx create-react-app app --template typescript:新しいReactアプリケーションを作成するためのコマンドを実行

このコマンドを実行するとReactアプリケーションの作成が実行され、最後の数行は下記のような標準出力がターミナルに表示されます。

特にエラーなどがでていなければReactアプリケーションの作成に成功です。

Dockerコンテナ起動時に開発用サーバーを起動

次にDockerコンテナ起動時に開発用サーバーを起動するようにdocker-compose.ymlを修正します。

cdコマンドでappディレクトリに移動してpackage.jsonで定義されたstartスクリプトを実行するようにしています。

Dockerコンテナを起動

最後にDockerコンテナを起動するために下記のコマンドを実行します。

Dockerコンテナの起動に成功していれば、最後の数行は下記のような標準出力がターミナルに表示されます。

ブラウザでhttp://localhost:3000にアクセスし、Reactアプリケーションの初期画面が表示されていれば成功です。

WindowsでReactのホットリロードが効かない場合の対処方法

WindowsでReactのホットリロードが効かない場合があるようです。

react-scripts 5.xx以降を使用している場合、WindowsではCHOKIDAR_USEPOLLINGは機能しないことが原因のようです。

参考記事:https://stackoverflow.com/questions/71297042/react-hot-reload-doesnt-work-in-docker-container

その場合は、package.jsonのscriptsを以下のようにします。

WATCHPACK_POLLING=trueを設定することで、Webpackはポーリングモードを使用してファイルの変更を監視します。

そしてdocker-compose.ymlを以下のように修正します。

あとはDockerコンテナを起動してhttp://localhost:3000にアクセスし、ホットリロードが効いているかを確認してみましょう。

まとめ

今回はDockerでReactの環境構築をする手順について解説していきましたが、いかがだったでしょうか。

個人開発のみであればDockerは不要かもしれませんが、Dockerコンテナで開発環境を構築することにより、複数人でプロジェクトを進める場合でも同じ環境で開発を進めることができます。

Dockerを使った開発は必須となりつつありますので、是非、チャレンジしてみてください。

Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

-React