WSL2+DockerでReactの環境を簡単に作る
概要
Windows 環境上(WSL2)で Docker を使って、React を環境を作ります。
試しに React を動かしてみたい場合、動かしながら React の勉強をしたい場合などに便利ですね。
環境
- Windows10
- WSL2(Ubuntu 20.04)
- Docker 20.10.12
- docker-compose 2.2.3
Windows 環境で WSL2 を未セットアップの方は、よろしければ以下を参照してください。
WSL2+Docker 環境構築手順
構成
WSL2 上のディレクトリパスは以下とします。
/home/[ユーザ名]/react-sample
react-sample フォルダ配下の構成(最終的に作成する構成)は以下の通りとします。
.
├ src :Reactプロジェクトソース用フォルダ
├ Dockerfile
└ docker-compose.yml
手順
プロジェクトフォルダの作成
まず最初に、今回のプロジェクトを格納するためのフォルダを作成しておきます。
cd ~
mkdir react-sample
※自身のホームディレクトリ(/home/[ユーザ名]配下)にプロジェクトフォルダを作成します。
コード格納用フォルダの作成
続いて、コード格納用のフォルダを作成しておきます。
cd react-sample
mkdir src
Dockerfile の作成
プロジェクトフォルダの直下に、Dockerfile を作成します。
vi Dockerfile
FROM node:17-alpine
WORKDIR /usr/app
使用する Docker の node のバージョンは以下で確認します。(今回は 17 を指定)
ちなみに、node:17 の後ろの alpine というのは、OS の種類で、alpine はコンテナで使用することを想定した軽量イメージです。
軽量化しているために OS のつくりがだいぶ違い、制約がいろいろあるようですが、とりあえず React を動かしたいだけなので問題ないでしょう。
以下参考にさせて頂きました。
docker-compose.yml の作成
プロジェクトフォルダの直下に、docker-compose.yml ファイルを作成します。
vi docker-compose.yml
version: '3'
services:
app:
build: ./
volumes:
- ./src:/usr/app
command: sh -c "yarn start"
ports:
- "3000:3000"
React アプリを構築する
プロジェクトフォルダ直下で以下のコマンドを実行して、create-react-app を実行します。
docker-compose run --rm app sh -c "npm install -g create-react-app && create-react-app ."
docker-compose run --rm app sh -c "npm install react-router-dom"
Docker コンテナを起動する
プロジェクトフォルダ直下で以下のコマンドを実行します。
docker-compose up -d
ブラウザで動作を確認する。
ブラウザで以下の URL にアクセスします。
http://localhost:3000/
以下のような画面が表示されたら OK です。
あとは、
~/src
配下で React コードを作成して動かしてみましょう。
注意事項
WSL2 で Docker を動作させた状態で、Docker コンテナ側からファイルを作成すると、ファイルの所有者がroot
になります。
一方で、WSL 上の操作ユーザはデフォルトで root 以外のユーザとなっており、また、VSCode などでファイルを開いた場合も root 以外のユーザとなるため、ファイル更新しようとするとPermission denied
エラーが発生します。
対応としては、VSCode のエクステンションを用いて、WSL2→VSCode 用コンテナ → 対象のフォルダという形で接続して作業を行う必要があります。
以下を参考としていただければと思います。
参考:よく使う Docker コマンド集
Discussion