1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Docker][React] Docker環境の基礎

1
Posted at

Dockerfile

内容 説明
目的 Docker イメージを定義するための設計図
役割 React アプリの依存インストール・ビルド・起動方法を定義
使用例 npm install で依存を入れ、npm start で開発サーバを起動する

よく使われる要素:

FROM node:18           # Node.js の公式ベースイメージ
WORKDIR /usr/src/app   # 作業ディレクトリ
COPY package*.json ./  # パッケージ定義のみ先にコピー
RUN npm install        # 依存関係をインストール
COPY . .               # 残りのコードをコピー
EXPOSE 3000            # 開発サーバのポートを開放
CMD ["npm", "start"]   # サーバ起動コマンド

.dockerignore

内容 説明
目的 Docker イメージ作成時に含めないファイル/フォルダを指定
役割 不要なファイル(例: node_modules, dist)のコピーを防ぎ、ビルド効率化と軽量化を実現
使用例 以下のようにファイルを指定:
node_modules
dist
build
.git
.env

docker-compose.yml

内容 説明
目的 複数の Docker コンテナ構成をまとめて管理・起動するためのファイル
役割 コンテナのビルドパス、ポート、ボリューム、依存関係を定義。開発用だけでなく将来的にDBやAPIも追加可能
使用例 docker-compose up で一発起動できるReactアプリ構成

よく使われる例:

services:
  react-app:
    build:
      context: ./app
    ports:
      - "3000:3000"
    volumes:
      - ./app:/usr/src/app
      - /usr/src/app/node_modules
    tty: true
    stdin_open: true

ディレクトリ構成

React プロジェクト全体は以下のような構造になります:

my-react-app/
├── docker-compose.yml           # Composeによる統合設定ファイル(ホスト側)
├── app/                         # Reactアプリ本体(Dockerビルド対象)
│   ├── Dockerfile               # Docker イメージ設計ファイル
│   ├── .dockerignore            # Dockerビルド時に除外するファイル指定
│   ├── package.json             # npm依存・スクリプトなど定義
│   ├── package-lock.json        # npmの依存固定ファイル
│   ├── tsconfig.json            # TypeScript のコンパイル設定
│   ├── public/                  # 静的ファイル(index.html, favicon等)
│   │   └── index.html           # HTMLテンプレート(Reactがマウントされる)
│   ├── src/                     # Reactアプリのメインコード(以下詳細)
│   │   ├── main.tsx             # アプリのエントリーポイント
│   │   ├── App.tsx              # アプリのルートコンポーネント
│   │   ├── index.css            # グローバルCSS(またはreset)
│   │   ├── assets/              # 画像やフォントなどの静的アセット
│   │   ├── components/          # UIコンポーネント群(Button, Cardなど)
│   │   │   └── Button.tsx       # 例:ボタンコンポーネント
│   │   ├── pages/               # 画面単位のコンポーネント(例: Home, About)
│   │   │   └── Home.tsx         # 例:ホーム画面のコンポーネント
│   │   ├── styles/              # CSS, SCSS, Tailwindなどスタイル定義
│   │   │   └── global.css       # 共通スタイル
│   │   ├── hooks/               # カスタムReactフック
│   │   │   └── useToggle.ts     # 例:トグル用のカスタムフック
│   │   ├── utils/               # 汎用関数・共通処理(例:日付変換)
│   │   │   └── formatDate.ts    # 日付フォーマッター
│   │   ├── types/               # 型定義ファイル(interface, enumなど)
│   │   │   └── User.ts          # 例:ユーザー型
│   │   └── constants/           # アプリ内定数(URL, メッセージなど)
│   │       └── urls.ts          # API URL 定義
│   └── ...

各ファイルの位置と役割まとめ

パス 役割
docker-compose.yml Reactアプリのビルド〜起動までの全体管理。複数コンテナにも対応可能
app/Dockerfile Reactアプリ用の Docker イメージを構築する設計図
app/.dockerignore Dockerイメージ作成時に除外するファイルを指定。無駄なコピーやビルドの失敗を防止
app/package.json Reactアプリの依存・スクリプト・基本設定
app/public/ 静的ファイル(index.htmlなど)
app/src/ Reactのロジックやコンポーネントなどの実装ソースコード
app/src/index.css React のエントリーポイント(main.tsxindex.tsx)で import される最小構成のCSS
- reset.cssnormalize.cssbodyなどの基本定義
app/src/styles/global.css 色・フォント・ボーダー・背景・ユーティリティクラスなど「再利用性の高い」共通スタイル
- Tailwind を使っていないプロジェクトでは特に多用される

参考リンク

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?