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)
最新文章
- 智能盲区监测系统:光效提示技术的安全进化与未来展望
- 新能源技术突破:动力电池革新与智能驾驶未来
- 高压压铸技术革新汽车制造:一体化铸件引领行业变革
- 智能LED驱动技术引领汽车照明革命与安全升级
- 轮胎与汽车安全行驶
- 眼睛开闭频率影响汽车驾驶安全
- 新能源汽车的“隐形大脑”:BMS如何守护电池安全?
- 雾灯使用全指南:避免误区,安全行车18-30字
- 动力电池与电驱动系统引领新能源汽车核心技术突破
- 碳纤维:让汽车轻量化革命提速的超级材料
- 涡轮增压技术解析:原理、性能对比与未来趋势
- 车联网与电动化革命:V2X技术如何重塑未来智能出行
- 行车安全必备:三角警示牌与制动系统的关键作用
- 电动化与智能化双轮驱动:汽车产业的技术变革与未来趋势
- 汽车悬挂系统解析与行车安全实用指南
- 电动汽车充电桩能源消耗优化策略
- 提升汽车动力的三大关键:进气、燃烧与排气效率优化
- 激光雷达与毫米波雷达:自动驾驶技术的核心突破与应用前景
- 五菱汽车创新之路
- 拖车救援服务保障行车安全 汽车故障拖车快速响应 专业拖车服务护您爱车 拖车救援全天候待命 汽车拖车服务高效便捷
