カテゴリ: React 更新日: 2026/03/23

ReactとDockerを使った開発環境構築の基本を徹底解説!初心者でもわかるReactとDockerの連携方法

ReactとDockerを使った開発環境構築の基本
ReactとDockerを使った開発環境構築の基本

先生と生徒の会話形式で理解しよう

生徒

「Reactでアプリを作っているんですけど、Dockerを使うと便利って聞きました。どういう意味なんですか?」

先生

「Dockerはアプリを入れるコンテナを作る仕組みなんです。まるでお弁当箱に材料を詰めて持ち運ぶように、Reactの開発環境をどこでも同じ状態で動かせるんですよ。」

生徒

「なるほど!でもReactとDockerをどうやって組み合わせるんですか?」

先生

「実際にはDockerfileとdocker-compose.ymlを使って設定します。それでは、順番に基本を見ていきましょう!」

1. Dockerとは何か?Reactと一緒に使う理由

1. Dockerとは何か?Reactと一緒に使う理由
1. Dockerとは何か?Reactと一緒に使う理由

Docker(ドッカー)は「コンテナ型仮想化」と呼ばれる技術を使って、ソフトウェアを同じ環境で動かすための仕組みです。初心者にとっては難しく聞こえるかもしれませんが、イメージとしては「同じ料理を誰でも同じ味で作れるように、材料とレシピをまとめて箱に詰めて渡す」ようなものです。

Reactの開発では、パソコンの環境によって「動いた」「動かない」と差が出やすいですが、Dockerを使えば誰のPCでも同じ環境が再現できます。これがDockerとReactを組み合わせる最大のメリットです。

2. ReactのプロジェクトをDockerで動かす流れ

2. ReactのプロジェクトをDockerで動かす流れ
2. ReactのプロジェクトをDockerで動かす流れ

ReactとDockerを組み合わせる開発環境構築の流れは次のようになります。

  1. Reactのプロジェクトを作成する
  2. Dockerfileを用意する
  3. docker-compose.ymlを作成する
  4. Dockerを使ってReactアプリを起動する

順番に設定していくことで、初心者でもReactアプリをDocker上で簡単に動かせるようになります。

3. Dockerfileの基本

3. Dockerfileの基本
3. Dockerfileの基本

Dockerfileは「Dockerで環境を作るためのレシピ」のようなファイルです。ReactをDockerで動かすときの基本的なDockerfileは次のようになります。


FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]

この設定で「Node.jsをインストールし、Reactの依存関係を入れて、アプリを起動する」という一連の流れをDockerに伝えています。

4. docker-compose.ymlで環境をまとめる

4. docker-compose.ymlで環境をまとめる
4. docker-compose.ymlで環境をまとめる

docker-compose.ymlは、複数のサービスをまとめて管理する設定ファイルです。Reactの開発環境をシンプルにDockerで動かす場合は次のように書きます。


version: "3"
services:
  react-app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules

これでローカルPCの3000番ポートとDockerコンテナの3000番ポートがつながり、ブラウザからReactアプリを表示できるようになります。

5. DockerでReactアプリを起動する手順

5. DockerでReactアプリを起動する手順
5. DockerでReactアプリを起動する手順

設定ファイルを準備したら、次の手順でアプリを起動できます。

  1. ターミナルを開く
  2. docker-compose up --build を実行する
  3. ブラウザで http://localhost:3000 にアクセスする
(画面にReactの初期ページが表示され、Docker経由でアプリが動いていることが確認できます)

6. ReactとDockerを使うメリット

6. ReactとDockerを使うメリット
6. ReactとDockerを使うメリット

ReactとDockerを組み合わせると、初心者でも次のような利点を得られます。

  • パソコンごとの環境差をなくせる
  • 新しいメンバーがすぐに開発を始められる
  • 開発と本番で同じ環境を再現できる

例えば、友達と一緒に料理を作るとき、同じ材料とレシピを共有すれば誰でも同じ料理を作れますよね。ReactとDockerを使うのもそれと同じで「開発環境を共有できる」という強みがあります。

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

最後に、ReactとDockerを初めて使うときによくあるつまずきポイントをまとめます。

  • Dockerをインストールしていないと動かない
  • WindowsとMacでボリュームの扱いが少し異なる
  • Dockerfileやdocker-compose.ymlのスペルミスでエラーになる

これらに気を付けながら進めれば、ReactとDockerを使った開発環境構築もスムーズに学べます。

まとめ

まとめ
まとめ

本記事では、モダンなWebフロントエンド開発に欠かせないReactとDockerを組み合わせた開発環境の構築方法について詳しく解説してきました。React単体での開発も素晴らしい体験ですが、Dockerというコンテナ技術を導入することで、その利便性は飛躍的に向上します。開発者が直面しがちな環境依存のトラブル、いわゆる「自分の環境では動いたのに、他の人の環境では動かない」という問題を、Dockerは根本から解決してくれます。

Dockerを導入する際の鍵となるのは、Dockerfileとdocker-compose.ymlの二つの設定ファイルです。これらは、Reactアプリが動作するために必要なOS、Node.jsのバージョン、ライブラリの依存関係、そしてネットワークの設定をコードとして記述した「設計図」です。この設計図さえあれば、開発チームの全員が数コマンドで全く同じ開発環境を手に入れることができ、スムーズな共同作業が可能になります。

実践的な開発を加速させるTips

実際のプロジェクトでは、Reactのコードを変更した際に即座にブラウザへ反映させる「ホットリロード」機能が重要です。Docker環境下でも、ボリュームマウント(Volumes)の設定を適切に行うことで、ローカルでのコード修正をリアルタイムにコンテナ内へ同期させることができます。これにより、Dockerを使っていることを意識させないほど快適な開発サイクルを実現できます。

また、本番環境へのデプロイを見据えた場合、マルチステージビルドという手法を用いることで、実行用のコンテナサイズを劇的に軽量化することも可能です。開発時はフル機能のNode.js環境を使い、本番用にはビルドされた静的ファイルだけを軽量なnginxサーバに載せるという使い分けが、モダンなフロントエンド開発の標準となっています。

Reactでの具体的な実装コード例

Docker環境が整った後、React側でどのようにコンポーネントを構築していくか、環境変数を利用した実用的なコード例を見てみましょう。Docker経由で環境変数を渡すことで、開発環境と本番環境でAPIの接続先を自動的に切り替えることができます。


import React, { useEffect, useState } from "react";

function DockerReactApp() {
  const [status, setStatus] = useState("読み込み中...");
  
  // Dockerの環境変数からAPIのURLを取得するイメージ
  const apiUrl = process.env.REACT_APP_API_URL || "http://localhost:5000";

  useEffect(() => {
    // コンポーネントがマウントされた時に実行される処理
    const timer = setTimeout(() => {
      setStatus("Docker環境でのReactアプリが正常に動作しています!");
    }, 1500);
    
    return () => clearTimeout(timer);
  }, []);

  return (
    <div className="container p-5 text-center">
      <div className="card shadow border-primary">
        <div className="card-body">
          <h1 className="text-primary mb-4">
            <i class="bi bi-box-seam"></i> React × Docker 連携
          </h1>
          <p className="lead">{status}</p>
          <div className="mt-4 p-3 bg-light rounded text-start">
            <h5 className="fw-bold small text-secondary uppercase">接続設定の確認</h5>
            <code className="text-dark">API Endpoint: {apiUrl}</code>
          </div>
          <button 
            className="btn btn-primary mt-4"
            onClick={() => alert("コンテナ内からメッセージをお届けしました!")}
          >
            アクションを実行
          </button>
        </div>
      </div>
    </div>
  );
}

export default DockerReactApp;
(画面に「読み込み中...」と表示された後、1.5秒後に「Docker環境でのReactアプリが正常に動作しています!」というメッセージに切り替わります)

これからのステップ:クラウドへの展開

Dockerでパッケージ化されたReactアプリは、AWSやGoogle Cloud、Azureといった主要なクラウドプラットフォームとの相性が抜群です。一度コンテナイメージを作成してしまえば、どこでも動かすことができるため、スケーラビリティの高いアプリケーション運用が可能になります。初心者のうちは、まずローカル環境で「docker-compose」を使って複数のコンテナ(フロントエンド、バックエンド、データベースなど)を同時に立ち上げる練習を積むのが良いでしょう。

学習を進める中で、エラーに遭遇することもあるかもしれません。しかし、Dockerのエラーメッセージは非常に具体的であり、スペルミスやパスの指定ミスを修正していく過程こそが、インフラ知識を深める絶好の機会となります。フロントエンドだけでなく、基盤となる環境構築のスキルを身につけることで、フルスタックエンジニアへの道が大きく開かれるはずです。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!Dockerfileを書くのって最初は難しそうだと思っていましたが、一つ一つの命令にちゃんと意味があるんですね。Node.jsのバージョンを固定できるのがすごく安心感あります。」

先生

「その通りです。チーム開発で一番困るのは『昨日まで動いていたのに、Nodeをアップデートしたら壊れた』という事態ですからね。Dockerを使えば、そのリスクを最小限に抑えられます。ボリューム設定についても理解できましたか?」

生徒

「はい!パソコン上のファイルをDockerの中に同期させる仕組みですよね。これのおかげで、コンテナを立ち上げたままコードを書き換えて、すぐにブラウザで結果を確認できるのが驚きでした。もっと不自由なものかと思っていました(笑)」

先生

「ははは、確かに昔の仮想化技術は重くて不自由なイメージがありましたね。でもDockerはプロセス単位で動くので、ネイティブ環境に近い速度で開発ができます。今後は、APIサーバなんかも一緒にDockerで動かしてみるといいですよ。」

生徒

「いいですね!フロントエンドとバックエンドを一つのdocker-compose.ymlで管理できれば、環境構築のストレスがゼロになりそうです。あと、最後に一つ質問ですが、Nodeのバージョンを変えたい時は、DockerfileのFROMのところを書き換えるだけでいいんですか?」

先生

「まさにその通りです!書き換えた後に再度ビルドするだけで、新しい環境に切り替わります。これがDockerの機動力です。ぜひ自分のポートフォリオ制作にも活用して、モダンな開発フローを自分のものにしてくださいね。」

生徒

「わかりました!これからもDockerを活用して、どんな環境でも自信を持って動かせるReactアプリを作っていきます。今日学んだことは一生モノのスキルになりそうです!」

カテゴリの一覧へ
新着記事
New1
React
ReactのPropsにデフォルト値を設定する方法を完全解説!初心者でもわかるPropsの基本
New2
React
Reactのカスタムフックでウィンドウサイズを取得する方法!初心者でもわかる実践ステップ
New3
React
React Routerのネストされたルートの使い方を完全解説!初心者でもわかるルーティング設計
New4
React
Reactでイベントハンドラに引数を渡す方法をアロー関数で解説!初心者向けガイド
人気記事
No.1
Java&Spring記事人気No1
React
React RouterのuseParamsでURLパラメータを取得する方法を完全解説!初心者でもわかる動的ルーティング
No.2
Java&Spring記事人気No2
React
React RouterのLinkコンポーネントの使い方を完全解説!初心者でもわかるページ遷移の基本
No.3
Java&Spring記事人気No3
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.4
Java&Spring記事人気No4
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.5
Java&Spring記事人気No5
React
React RouterのRouteコンポーネントの使い方を完全解説!初心者でもわかるルーティングの基本
No.6
Java&Spring記事人気No6
React
React Routerのネストされたルートの使い方を完全解説!初心者でもわかるルーティング設計
No.7
Java&Spring記事人気No7
React
Reactの学習ロードマップ!初心者が最短で習得する流れを完全ガイド
No.8
Java&Spring記事人気No8
Next.js
Next.js Linkコンポーネントでページ遷移を高速化する方法!初心者向け解説