Docker で Vite + React + TypeScript の環境構築!Tailwind CSS も導入
はじめに
本記事では、Docker
を使ってVite
ベースのReact
+TypeScript
環境を構築する手順を紹介します。
また、スタイルの管理を簡単にするためにTailwind CSS
も導入します。
ローカル環境にNode.js
をインストールせずに、コンテナを活用して開発を進められるメリットがあります。
「環境構築を効率化したい」「React × TypeScriptの開発をスムーズに始めたい」という方にオススメです!
この記事でできること
-
Docker
を使用し、React + TypeScript
の環境をセットアップ -
Vite
を利用して高速開発 -
Tailwind CSS
を導入してスタイル管理を簡単に - ローカルで
Node.js
のインストール不要! コンテナ上で動作
環境構築の流れ
1.フォルダ構成
frontend-react
フォルダの中に Vite のプロジェクトを作成します。
<プロジェクト名>
├── frontend-react # React + TypeScript のフロントエンド
│ ├── Dockerfile
│ ├── package.json
│
├── docker-compose.yml
2.docker-compose.ymlの設定
docker-compose.yml
にfrontend-react
ディレクトリを新規追加します。
services:
frontend-react:
build:
context: ./frontend-react
dockerfile: Dockerfile
volumes:
- ./frontend-react:/frontend-react
command: yarn run dev
ports:
- "5173:5173"
depends_on:
- backend
stdin_open: true
tty: true
ポイント
-
build
:frontend-react
のDockerfile
を指定 -
volumes
:ローカルのfrontend-react
ディレクトリとコンテナを同期 -
command: yarn run dev
:Vite
でyarn run dev
コマンドを実行すると、開発サーバー(dev server
)が起動
⇨ ドキュメント<はじめに> -
ports: "5173:5173"
:Vite
の開発サーバーは デフォルトでポート5173
を使用するため、ホストPC(外部)からアクセスできるように5173:5173
を指定
⇨ ドキュメント<サーバーオプション>
3. Dockerfileの作成
frontend-react
用のDockerfile
を作成します。
FROM node:22.11.0
WORKDIR /frontend-react
COPY package.json yarn.lock ./
RUN yarn install
COPY . .
ポイント
-
FROM node:22.11.0
:公式リリーススケジュールを参照しLTSの22系を利用
⇨ リリーススケジュール -
WORKDIR /frontend-react
:作業ディレクトリ指定 -
COPY package.json yarn.lock ./
:パッケージ情報を先にコピーすることで、Docker
のレイヤーキャッシュを活用し、インストール時間を短縮
⇨Docker
はDockerfile
の各ステップをレイヤーとしてキャッシュするため、package.json
やyarn.lock
に変更がなければyarn install
の結果を再利用できる。
⇨ 一方、もしCOPY . .
を先にすると、コードが変更されるたびにレイヤーキャッシュが無効化され、毎回yarn install
を実行する。
※ 「Dockerのレイヤーキャッシュ」について詳しく知りたい方は、こちらの記事をご参照ください!⇨ Dockerfileのフロントエンドとバックエンドの構築、命令コマンドの使い方、レイヤーキャッシュについて -
RUN yarn install
で必要なパッケージをインストール -
COPY . .
:通常、volumes を使ってローカルの frontend-react ディレクトリとコンテナを同期しますが、COPY . .
を追加することで、Docker
イメージ単体でも動作。
これにより、docker compose
を使用せずにdocker build
→docker run
でも実行可能
4. Vite で React + TypeScript プロジェクトを作成
下のコマンドを実行し、frontend-react
フォルダ内にVite
ベースのReact + TypeScript
プロジェクトを作成します。
docker compose run --rm frontend-react sh -c "yarn create vite . --template react-ts"
コマンドについて
- docker compose run --rm frontend-react
→frontend-react
の`コンテナを一時的に起動し、終了後に自動削除
→ 不要なコンテナが残らないため、ローカル環境を汚さずに実行 - sh -c "yarn create vite . --template react-ts"
→Vite
を使用しReact + TypeScript
のプロジェクトを作成
→ .(カレントディレクトリ)を指定し、frontend-react
のフォルダ内に直接セットアップ
5. パッケージのインストール
下のコマンドでyarn install
を実行します。
docker compose run --rm frontend-react sh -c 'yarn install'
コマンドについて
-
sh -c 'yarn install'
→sh -c
は、シェル(sh)を起動し、その内でyarn install
を実行するためのオプション
→ これにより、yarn install
が確実に解釈実行
6. Vite の設定を修正
作成されたpackage.json
のscripts.dev
を以下のように変更します。
"dev": "vite --host"
変更理由
デフォルトではlocalhost (127.0.0.1)
にバインドされるため、--host
を指定して 0.0.0.0
に変更します。
これにより、コンテナ外(ホストPC)からアクセス可能になります。
7. Tailwind CSS の導入
① Tailwind CSS をインストール
docker compose run --rm frontend-react sh -c "yarn add -D tailwindcss@3 postcss autoprefixer"
② 設定ファイルを作成
docker compose run --rm frontend-react sh -c "yarn tailwindcss init -p"
③ tailwind.config.js の修正
export default {
content: [
"./index.html", ←(追加)
"./src/**/*.{js,ts,jsx,tsx}", ←(追加)
],
theme: {
extend: {},
},
plugins: [],
}
④ src/index.css に追加
src/index.css
の先頭に以下を追加します。
@tailwind base;
@tailwind components;
@tailwind utilities;
8. Docker コンテナの起動
docker compose build
docker compose up -d
9. レイアウトの崩れを修正するには
もし画面全体が中央に寄らないなどの問題が発生した場合、index.css
を下のように修正します。
body {
@apply bg-gray-100 text-gray-900;
}
以上で http://localhost:5173 にアクセスすれば React アプリが動作するはずです!
Discussion