1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker+DevContainerでNext.jsの環境構築してみた

1
Last updated at Posted at 2026-03-21

この記事は「MMAブログリレー」の第6回の記事です。
前回の記事は、ctes091xくんの「Androidで学内限定ページを見るときはSSH Dynamic Port-Forwardingを使う【#電通大はAndroidでVPNを使わせろ】」でした。
ブログリレーの様子を見る感じ、学内向けアドバイスが多いっぽいです。

やろうとしていること

「Windowsで動いているVSCodeのDevContainerで、WSLで動いているDockerコンテナを実行環境とするNext.jsの環境構築」が目標です(日本語が難しい)。
要は環境構築で楽をしたいのです1。「このパソコンNode.js入れてなかった~」とか「PATH通して無かった」とか「Windowsのコマンドの書き方よくわからん」っていうのを減らしたかったのです。複数人での共同作業とかサーバーにデプロイすることも考えたらDockerコンテナを実行環境として用いるメリットはさらに大きくなります。

ちなみに、Next.js自体の学習は進んでないです。

私の環境

ホストOS Windows 11
WSL2のディストリビューション Ubuntu 24.04.4 LTS
VSCodeのバージョン 1.110.0

手順

WSLへのDockerのインストール

こちらのコピペでできます。

WSL
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

# Install
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

ユーザをdockerグループに追加

WSL
sudo usermod -aG docker $USER

docker用のユーザーグループがあるのでユーザを追加します。これでいちいちsudoをつける必要がなくなります。

使い捨てのコンテナでファイルを作る

以下コマンドをWSL内で実行します。

WSL
docker run --rm -it -v ${PWD}:/app -w /app node:latest npx create-next-app@latest .
オプション 意味
--rm 実行が終わったらコンテナを破棄
-it ターミナルを表示させ、かつ、入力もできるようにする。
前者が-iの効果、後者が-tの効果で、両者を組み合わせることが多いそうです。
-v ${PWD}:/app カレントディレクトリをコンテナ内の/appにマウントする
-w /app コンテナ内の/appを作業ディレクトリとする
node:latest nodeの公式イメージはたくさんあるそうですが、よくわからんかったらこれを使えばいいそうです。
他にも、軽量なalpineベースのイメージもあります。
npx create-next-app@latest . コンテナ内で実行されます。
/appにnext.jsのプロジェクトを作ります。

Next.jsのプロジェクトの初期状態のファイルを作ります。ホストPCにNode.jsが入ってないことも考えて、使い捨てのコンテナから作りました。nextjsの設定を聞かれるのでお好みで。

VSCodeへの拡張機能のインストール

Dev Containers(ms-vscode-remote.remote-containers)WSL(ms-vscode-remote.remote-wsl)をインストールしました。
コマンドパレット(Ctrl+Shift+P)より表示: リモートエクスプローラーを表示を選び、Dockerを入れたWSL環境を選びます。

WSL
cd ~
mkdir nextapp
code nextapp

のように**ホームディレクトリ上に(後述)**適当なフォルダを作り、vscodeで開きます。

VSCodeをコンテナにつなぐ

Next.jsのファイル群と同じ位置に.devcontainerディレクトリを作り、その中に以下の内容でdevcontainer.jsonを作ります。

.devcontainer/devcontainer.json
{
  "name": "NextjsEnv",
  "image": "node:latest",
  "forwardPorts": [3000],
  "workspaceFolder": "/app",  
  "workspaceMount": "source=${localWorkspaceFolder},target=/app,type=bind"
}
オプション 意味
image イメージを指定
forwardPorts コンテナの3000番ポートをローカルの3000番ポートに転送
workspaceMount VSCodeで開いてるディレクトリとコンテナの/appを同期(bind)させる

コマンドパレット(Ctrl+Shift+P)より"Reopen in dev container"を選択します。これで、vscodeがコンテナに接続します。

pnpmのインストール(任意)

Next.jsではパッケージマネージャとしてpnpmを使うことが多いそうです。

Dockerコンテナ上
npm install -g pnpm

でインストールしました。

開発サーバーの起動

Dockerコンテナ上
pnpm dev

で起動します。ブラウザでhttp://localhost:3000を開いたらこんな感じになりました。ホットリロードも使えます。image.png

ワークスペースの作成

ファイル名前を付けてワークスペースを保存ローカルを表示により、デスクトップ等にワークスペースを保存します。保存した.code-workspaceファイルを開いたらVSCodeのコンテナ接続までをやってくれます。

躓いたところ

重い

どうやら、Windowsの入出力とLinuxのコンテナの相性が悪いそうです。まず、私はWindowsのDockerでやろうとしていましたがこれが良くなかったです。WSLに接続することで解決できると思いましたが、そうでもなかったです。/mnt/cのようなWindows上のディレクトリにWSLからアクセスするのは相性の問題で重くなりがちだそうです。
Windowsから楽々見れたらいいだろうと思ってのに、、、

Firefoxじゃうまく見れないことがある

謎です。少なくともEdgeなら見れます。

参考

https://hub.docker.com/_/node
https://code.visualstudio.com/docs/devcontainers/containers
Docker/Kubernetes実践コンテナ開発入門

  1. Dockerの学習とか試行錯誤を考えたら全然楽できなかったですが、、、

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?