Docker搭建Node.js开发环境与热重载配置
<|begin▁of▁sentence|>---
title: "Docker で Node.js の開発環境を構築する"
date: 2020-12-13T14:00:00+09:00
draft: false
toc: true
tags: ["docker", "nodejs"]
---
## はじめに
Docker で Node.js の開発環境を構築する方法を調べたので、その備忘録です。
## 環境
- macOS Catalina 10.15.7
- Docker Desktop for Mac 2.5.0.1
- docker-compose version 1.27.4
## プロジェクトの作成
まずは、プロジェクトのディレクトリを作成します。
```sh
mkdir nodejs-docker-dev
cd nodejs-docker-dev
```
## Dockerfile の作成
Node.js の公式イメージをベースに Dockerfile を作成します。
```dockerfile
FROM node:14.15.1
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]
```
## docker-compose.yml の作成
開発用に docker-compose.yml を作成します。
```yaml
version: '3'
services:
app:
build: .
ports:
- 3000:3000
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
environment:
- NODE_ENV=development
```
## .dockerignore の作成
Docker イメージに含めたくないファイルを指定します。
```dockerignore
node_modules
npm-debug.log
```
## package.json の作成
Node.js のプロジェクトを作成します。
```sh
npm init -y
```
## アプリケーションの作成
簡単なアプリケーションを作成します。
```javascript
// index.js
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
```
## 依存関係のインストール
Express をインストールします。
```sh
npm install express
```
## アプリケーションの起動
Docker Compose でアプリケーションを起動します。
```sh
docker-compose up
```
ブラウザで `http://localhost:3000` にアクセスすると、「Hello World!」と表示されます。
## ホットリロードの設定
開発中はコードの変更を即時反映させたいので、ホットリロードを設定します。
まず、nodemon を開発依存関係としてインストールします。
```sh
npm install --save-dev nodemon
```
package.json の scripts を変更します。
```json
{
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
}
}
```
docker-compose.yml の command を変更します。
```yaml
version: '3'
services:
app:
build: .
ports:
- 3000:3000
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
environment:
- NODE_ENV=development
command: npm run dev
```
これで、コードを変更すると自動でアプリケーションが再起動されます。
## おわりに
Docker で Node.js の開発環境を構築する方法を紹介しました。Docker を使うことで、環境の差異を気にせずに開発を進めることができます。また、ホットリロードを設定することで、開発効率も向上します。
## 参考
- [Docker で Node.js の開発環境を構築する](https://matsuand.github.io/docs.docker.jp.onthefly/language/nodejs/build-images/)
- [Docker で Node.js の開発環境を構築する(ホットリロード対応)](https://qiita.com/ucan-lab/items/17c806973e69792ada99)
最新文章
- 特斯拉自动驾驶技术引发安全争议
- 奔驰豪华轿车驾驶体验卓越
- 智能驾驶与车联网技术革新推动汽车产业升级
- 汽车冷却风扇高效散热保障引擎稳定运行
- 车险备胎免赔额详解:如何合理选择保障方案
- 汽车空气滤清器更换周期及保养技巧
- 汽车发动机性能优化技术研究与应用
- 三菱汽车技术创新与未来展望
- 固态电池与自动驾驶引领未来:车联网技术重塑智慧交通新格局
- 电动化浪潮:电池技术革新与智能驾驶的未来趋势
- 从“电子乐器”到“数字静音”:NVH电驱如何重塑电动出行体验
- 电控固态电池技术革新:高能量密度与智能BMS的未来
- 电动汽车革命:从电池突破到智能出行的未来
- ADAS技术解析:毫米波雷达与摄像头如何重塑驾驶安全
- 提升汽车动力的三大关键:进气、燃烧与排气效率优化
- 电动汽车技术革新:固态电池与车联网引领未来出行
- 电动化与智能驾驶引领未来:汽车产业五大变革趋势
- 强劲动力与卓越操控完美结合
- 电动化与智能化驱动:2023全球汽车产业变革趋势
- 动力电池与激光雷达技术突破引领MaaS出行新变革
