node.js - Docker-Compose + Volume + NodeJs - 保存时未反映更改
问题描述
目录结构
projectroot/
docker-compose.yml
frontend/
Dockerfile
src/
node_modules
package.json
....
项目根/前端/docker-compose.yml
services:
frontend:
build: ./frontend
ports:
- 3000:3000
volumes:
- ./frontend/src:/app/
Dockerfile
FROM node:12.18.3
COPY /src/package.json .
RUN npm install --save-dev
COPY /src .
EXPOSE 3000
CMD ["npm", "run", "dev"]
以上工作。我可以运行docker-compose up
并且我的应用程序在localhost:3000
.
但是,当我对 projectroot/frontend/pages/index.js 进行更改时,不会反映该更改。
我很困惑,因为我将 /src 的内容复制到 Dockerfile ( COPY /src .
) 中的 /app 。如果我在其中运行容器并 bash,我会看到/app
包含我的主机文件夹内容的/src
文件夹。
如果我从中删除COPY
命令Dockerfile
,则读数只会循环以下内容:
$ docker-compose up
Recreating pricey_frontend_1 ... done
Attaching to pricey_frontend_1
frontend_1 |
frontend_1 | > src@1.0.0 dev /
frontend_1 | > cross-env NODE_ENV=development nodemon server.js
frontend_1 |
frontend_1 | [nodemon] 2.0.4
frontend_1 | [nodemon] to restart at any time, enter `rs`
frontend_1 | [nodemon] watching path(s): *.*
frontend_1 | [nodemon] watching extensions: js,mjs,json
frontend_1 | [nodemon] starting `npm run dev server.js`
frontend_1 |
frontend_1 | > src@1.0.0 dev /
frontend_1 | > cross-env NODE_ENV=development nodemon server.js "server.js"
*** loops until I kill it***
在我看来,删除 COPY 是有意义的,因为我想使用主机卷 src (这样我就可以更新它并立即反映在 localhost:3000 上的更改。我错过了什么?
解决方案
推荐阅读
- javascript - 将 ref 作为道具传递以获取 offsetTop
- javascript - Crypto.js 安全
- c# - .Net 架构关于持久层和 InternalsVisibleTo 的清洁架构问题
- python-3.x - /'learning_logs' 处的 NoReverseMatch 不是已注册的命名空间
- java - Tomcat 8 多部分请求需要更长时间才能执行
- php - Laravel如何将一个产品插入多个类别
- orientdb - OrientDB:如何找到元素之间的所有完整路径
- flutter - Flutter Intl - 在 null 上调用 getter
- python - 带有稀疏刻度标签且没有科学记数法的 LogFormatter
- python - 对键值对的元组进行排序