🐵

Docker で Vite + React + TypeScript の環境構築!Tailwind CSS も導入

2025/02/17に公開

はじめに

本記事では、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.ymlfrontend-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

ポイント

  • buildfrontend-reactDockerfileを指定
  • volumes:ローカルのfrontend-reactディレクトリとコンテナを同期
  • command: yarn run devViteyarn 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のレイヤーキャッシュを活用し、インストール時間を短縮
    DockerDockerfileの各ステップをレイヤーとしてキャッシュするため、package.jsonyarn.lockに変更がなければyarn installの結果を再利用できる。
    ⇨ 一方、もしCOPY . .を先にすると、コードが変更されるたびにレイヤーキャッシュが無効化され、毎回yarn installを実行する。
    ※ 「Dockerのレイヤーキャッシュ」について詳しく知りたい方は、こちらの記事をご参照ください!⇨ Dockerfileのフロントエンドとバックエンドの構築、命令コマンドの使い方、レイヤーキャッシュについて
  • RUN yarn installで必要なパッケージをインストール
  • COPY . .:通常、volumes を使ってローカルの frontend-react ディレクトリとコンテナを同期しますが、COPY . .を追加することで、Dockerイメージ単体でも動作。
    これにより、docker composeを使用せずにdocker builddocker 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.jsonscripts.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