Next.js + MUI + TypeScript の開発環境を Docker で作る
さっと Web アプリを作って試したい時に、Node.js のバージョンなどで引っかかり出鼻をくじかれることが多い。格闘している内にアプリ作成意欲が失われて… みたいなことになりやすく、Docker を使って時間をかけずに開発を始められるようにしたいところ。最近良く目にする Next.js も気になるし、はじめから TypeScript にしておいた方がいいのかもと思い始めている。更に、何か作る時に UI コンポーネントは必須だなーと思う。
というわけで Next.js + MUI + TypeScript の開発環境を Docker で作ってみよう。
FROM node
WORKDIR /app
version: '3'
services:
app:
build:
context: .
tty: true
ports:
- "3000:3000"
volumes:
- ./src:/app
command: sh -c "npm run dev"
この2つのファイルを作ってから
docker-compose build
docker-compose run --rm app sh -c 'curl https://codeload.github.com/mui/material-ui/tar.gz/master | tar -xz --strip=3 material-ui-master/examples/nextjs-with-typescript'
docker-compose run --rm app sh -c 'cd src | npm install'
docker-compose up
http://localhost:3000/ へアクセスすると下記が表示される。
下記を参考にした。
https://zenn.dev/temple_c_tech/articles/setup-next-on-docker#create-next-app
https://github.com/mui/material-ui/tree/master/examples/nextjs-with-typescript
https://qiita.com/yyos/items/409784a040d20a2c2d4a
2022.11.23 追記
Mac + Docker Desktop なら問題なかったのだが、Windows + WSL2 の環境で試したところ、ホットリロードがめちゃくちゃ遅い現象が発生…
下記の対応をしたところ、変更検知からコンパイルまでは速くなったのだが、ブラウザでのアクセスがめちゃくちゃ遅い状況が続いている。あと、CPU負荷がかなり高い状態になってしまうのでそれも考えもの。
version: '3'
services:
app:
build:
context: .
tty: true
ports:
- "3000:3000"
volumes:
- ./src:/app
environment:
- WATCHPACK_POLLING=true
command: sh -c "npm run dev"
[automount]
root="/home/mnt/"
なお、上記でマウント先を変更したら VSCode のターミナルで wsl コマンドでアクセスした時にいちいち移動する必要があるかと思ったが、マウント先を認識しているようで、新しいマウント先のカレントディレクトリを開いてくれた。
コメントを残す