はじめに
Dockerの学習をしてReactの環境構築をしたので忘備録としてまとめます。
実装環境
- mac
- VScode
- Docker Desktop
環境構築手順
今回はプロジェクト名をreact-docker-devcontainerとしています。
フォルダ構成
.
├── .devcontainer # devcontainer構成用のフォルダ
│ └── devcontainer.json
├── Dockerfile
├── docker-compose.yml
└── app # viteで構成したReactファイルを格納するフォルダ
Docker環境構築
まずは、作成したプロジェクトディレクトリに移動します。
cd react-docker-devcontainer
次に、Dockerに必要なファイルを作成します。
Dockerfile
FROM node:22-alpine
WORKDIR /workspace
COPY ./package*.json ./
CMD ["/bin/sh"]
COPY . .
docker-compose.yml
services:
app:
container_name: app
build: ./
tty: true
volumes:
- ./app:/workspace:cached
ports:
- 5173:5173
Dockerコンテナの起動
Docker Desktopを起動して以下のコマンドでDockerコンテナを起動します。
docker compose up
コマンド実行後、画像赤枠のようにコンテナが立ち上がっていたら成功です。
ViteでReactプロジェクトの作成
以下のコマンドで起動したコンテナ内に入ります
docker compose exec app sh
ターミナル上に画像のように/workspace #とでていたら起動しているDockerコンテナ内に入れていて成功です。
この/workspaceはDockerfileで設定したWORKDIR /workspaceになります。
次に、以下のコマンドでReactプロジェクトを作成します。
npm create vite@latest . -- --template react
プロジェクト作成後、画像のようになったらnpm installを実行します。
npm run dev
実行前にvite.config.jsを以下のように変更します。
これはコンテナでviteを立ち上げるためのお作法だと思っていただければと思います。
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
// https://vite.dev/config/
export default defineConfig({
server: {
host: true,
},
plugins: [react()],
});
ファイル変更後、npm run dev
を実行します。
画像の様な画面になったら成功です。
以上でdocker + Viteでの環境構築は完了です。
次はdevcontainerの環境を構築します。
一度docker compose down
でdockerを止めましょう。
VS code拡張機能DevContainersのインストール
devcontainerを起動するにはVScodeの拡張機能DevContainersをインストールする必要があります。
インストールしてなければしましょう。
必要ファイルの作成
トップで.devcontainer
というディレクトリを作成して、devcontainer.json
というファイルを作成して以下をコピペで保存してください。
{
"name": "app-container",
"service": "app",
"workspaceFolder": "/workspace",
"dockerComposeFile": "../docker-compose.yml",
"customizations": {
"vscode": {
"extensions": [
"dsznajder.es7-react-js-snippets",
"formulahendry.auto-rename-tag",
"formulahendry.auto-close-tag",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ms-ceintl.vscode-language-pack-ja",
"oderwat.indent-rainbow"
]
}
}
}
ファイル内の”extensions”はvs codeの拡張機能です。
例えば、ES7+ React/Redux/React-Native snippetsを利用したいときは画像右下の識別子を”extensions”に含めます。
これで準備は完了です。
devcontainerで環境を立ち上げる
VS code 左下の青いボタンを押下後、コンテナーで再度開くを選択します。
左下の青いボタンが開発コンテナーと表示されれば成功です。
docker Desktopを確認してもコンテナが立ち上がっていると思います。
また、拡張機能を確認すると開発コンテナーにインストールされた拡張機能が表示されていると思います。これは開発コンテナー内にのみインストールされている拡張機能なので開発コンテナーの接続を終了するとこの拡張機能も消えます。これで複数言語で開発をする方もローカル環境の拡張機能を汚さずに開発することができます。
おまけ
Dockerfileを以下のよう修正することでDevcontainer起動時に自動でnpm rnu dev
を実行してサーバーを立ち上げることもできます。
FROM node:22-alpine
WORKDIR /workspace
COPY ./package*.json ./
CMD ["/bin/sh", "-c", "npm install && npm run dev"]
COPY . .
修正したら必ずdocker compose build
でbuildし直してください。
Devcontainerを立ち上げてhttp://localhost:5173/
に接続すると同じようにViteの画面が表示されると思います。
まとめ
いかがでしたでしょうか?今回はVite + Docker + DevcontainerでReactの環境構築をしてみました。devcontainerはローカルの開発環境を汚さないために重宝すると思うのでぜひ試してみてください。