アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

DockerでNext.js環境を構築する方法

Featured image of the post

近年、Next.js はその柔軟性と高性能なレンダリング機能により、フロントエンド開発において非常に人気のあるフレームワークです。一方で、Docker を活用することで、環境構築の手間を削減し、どこでも同じ環境でアプリケーションを動作させることが可能になります。

本記事では、Dockerを使ってNext.js環境を簡単に構築する方法 をわかりやすく解説します。


[目次を開く]

1. Next.jsとは?

Next.js は、Reactベースのフレームワークで、以下のような特徴があります:

  • SSR(サーバーサイドレンダリング)対応
  • SSG(静的サイト生成)機能
  • APIルーティングのサポート
  • 高性能なビルド最適化
  • TypeScriptサポート

こうした機能により、SEO対策が容易になり、ユーザー体験の向上が可能です。


2. Dockerを使うメリット

Dockerを導入することで、以下のような利点があります:

  • 環境構築の自動化:チーム内で統一された環境を提供
  • 依存関係の管理:各種ライブラリのバージョン違いによる不具合を防止
  • ポータビリティ:どこでも同じ環境でアプリケーションを動作可能
  • スケーラビリティ:コンテナ化により、デプロイやスケールが容易

3. 必要なツールのインストール

Next.jsのDocker環境を構築するために、以下のツールを準備します:

  1. Node.js(推奨バージョン:LTS版)
  2. Docker Desktop(最新版を公式サイトからダウンロード)
  3. VSCode(開発環境として推奨)

4. DockerでNext.js環境を構築する手順

① プロジェクトの作成

まず、Next.jsのプロジェクトを作成します。

npx create-next-app my-nextjs-app
cd my-nextjs-app

このコマンドを実行すると、my-nextjs-app フォルダにNext.jsのプロジェクトが作成されます。


② Dockerファイルの作成

プロジェクトのルートディレクトリに Dockerfile を作成し、以下の内容を記述します。

# ベースイメージとしてNode.jsを使用
FROM node:18-alpine

# 作業ディレクトリを設定
WORKDIR /app

# package.jsonとpackage-lock.jsonをコピー
COPY package*.json ./

# 依存関係のインストール
RUN npm install

# Next.jsのアプリケーションコードをコピー
COPY . .

# アプリのビルド
RUN npm run build

# ポート3000を公開
EXPOSE 3000

# アプリケーションを起動
CMD ["npm", "run", "start"]


.dockerignore の作成

不要なファイルをコンテナに含めないために、.dockerignore ファイルを作成します。

node_modules
npm-debug.log
.next
.DS_Store

docker-compose.yml の作成(オプション)

複数のサービスを管理する場合、docker-compose.yml を使用すると便利です。

version: '3'
services:
  nextjs:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - NODE_ENV=development

⑤ Dockerイメージのビルドと起動

プロジェクトのルートディレクトリで、以下のコマンドを実行します。

docker build -t my-nextjs-app .

イメージのビルドが完了したら、次のコマンドでコンテナを起動します。

docker run -p 3000:3000 my-nextjs-app

これで、ブラウザで http://localhost:3000 にアクセスすると、Next.jsアプリケーションが表示されるはずです。


5. 開発環境の最適化

開発時に便利なように、ホットリロードを有効化したい場合は、docker-compose.override.yml を追加して次のように設定します。

services:
  nextjs:
    command: npm run dev
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - NODE_ENV=development

これにより、ファイルを変更するとコンテナ内で即座に反映されるようになります。


6. 本番環境へのデプロイ

Docker化したNext.jsアプリを本番環境へデプロイする場合、以下の手順が考えられます。

  1. クラウドサービスを活用(AWS ECS, Google Cloud Run, Vercelなど)
  2. Docker Hubにイメージをプッシュし、サーバーでpull
  3. CI/CDツールと連携(GitHub Actions、GitLab CIなど)

7. まとめ

Dockerを使ってNext.js環境を構築することで、以下のメリットを享受できます。

  • 環境構築の手間を削減し、スムーズなチーム開発が可能
  • 本番環境との互換性を維持しながら、開発スピードを向上
  • スケーラブルなデプロイメントが容易

今後は、Dockerを活用したCI/CDの構築にも挑戦してみてください。

あなたを爆速で成長させるメンタリングプログラムはこちらから↓↓

RUNTEQ(ランテック) - 実践型Webエンジニア養成プログラミングスクールの入会