node.js - 如何在 Docker 容器中设置 Nodemon?
问题描述
我正在尝试在 Docker 容器中设置 Nodemon。它说 nodemon 正在运行,但是当我更改 index.js 文件中的代码时,它不会像在 docker 之外那样重新加载。我尝试将 -L 添加到命令中,但没有运气。我也尝试在 docker 文件中安装 nodemon,但没有运气。
每当我更改 index.js 文件时,我都必须执行 docker-compose up --build 。
有任何想法吗?
这是我的文件结构:
-api
-node_modules
-.dockerignore
-Dockerfile
-index.js
-package.json
-package-lock.json
-docker-compose.yml
码头工人-compose.yml:
version: '3.4'
services:
api:
build:
context: ./api
container_name: api
environment:
- PORT=3001
volumes:
- ./api/src:/usr/app/src
ports:
- '3001:3001'
command: npm run dev
Dockerfile:
FROM node:14.15.2-alpine3.12
WORKDIR /usr/app
COPY package*.json ./
RUN npm install
COPY . .
包.json:
{
"name": "api",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"express": "^4.17.1"
},
"scripts": {
"dev": "nodemon index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"nodemon": "^2.0.6"
}
}
解决方案
我想到了!!!
经过大量的试验和错误。它与我的 docker compose 以及 nodemon 中的卷有关。不是 100% 确定为什么任何洞察力也会有所帮助。
解决方法是将我的音量从
- ./api/src:/usr/app/src
至:
- ./api:/usr/src/app
然后我必须将 -L 标志添加到我的 nodemon 命令中才能重新加载。
推荐阅读
- flutter - 在 Flutter 中根据屏幕宽度更改文本大小
- php - 如何在 WooCommerce 的产品页面中为产品标题添加副标题?
- html - Google Chrome 上的 HTML 不显示我的图片
- reactjs - React - useEffect hook - componentDidMount to useEffect
- c# - 在WPF中托管时如何更改winforms面板的背景颜色?
- php - 使用 PHP [Codeigniter] 从数据库中提取数据到文本文件
- java - 在 Spring Boot 中使用 BCrypt 散列函数而没有所有过度杀伤的安全性?
- c++ - 为什么在下面的代码中返回类型是用于运算符重载的类类型?
- python-3.x - TypeError: unsupported operand type(s) for /: 'list' and 'int' ,同时从 pdf 中提取表格内容
- sql - MYSQL:当条件A满足时从表中选择一个日期;如果日期为空,则从条件 B 中选择日期