docker - Docker 卷 - 未反映更改
问题描述
使用 node.js
我遇到了 docker 卷的问题。我在 docker-compose.yml 文件中设置了一个卷,但由于某种原因,我在本地进行的更改没有得到反映。知道为什么吗?
我有当前的 docker-compose.yml 文件
version: "3"
services:
posts:
build:
dockerfile: Dockerfile.dev
context: ./posts
ports:
- "4000:4000"
volumes:
- /app/node_modules
- ./posts:/app
...// more services here
摘自帖子中的 index.js
app.get("/posts", (req, res) => {
console.log("Quackss!");
res.send(posts);
});
现在让我说我跑
docker-compose up --build posts
当我通过邮递员向 /posts 提出第一个请求时,我看到“Quackss!” 在我的控制台中。
现在当我将代码更改为
app.get("/posts", (req, res) => {
console.log("Double Quack");
res.send(posts);
});
并保存,然后通过邮递员提出请求我仍然看到“嘎嘎!!” 而不是“双嘎”。
我确实有 nodemon 设置,所以我认为这不是问题。
我跑去docker ps
查看容器的名称然后运行docker exec -it <container name> sh
如果cat index.js
卷设置正确,我希望看到
app.get("/posts", (req, res) => {
console.log("Double Quack");
res.send(posts);
});
相反,我看到了原版
app.get("/posts", (req, res) => {
console.log("Quackss!");
res.send(posts);
});
这是我的帖子 package.json
{
"name": "posts",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.19.2",
"cors": "^2.8.5",
"express": "^4.17.1",
"nodemon": "^2.0.4"
}
}
和 dockerfile.dev
FROM node:alpine
WORKDIR /usr/app/
COPY ./package.json ./
RUN npm install
COPY ./ ./
CMD ["npm", "start"]
知道为什么会这样吗?
解决方案
您dockerfile.dev
有一个WORKDIR
,/usr/app/
并且您正在将源代码复制到该目录中。您的docker-compose.yml
文件正在将卷映射到/app
。
一种解决方案是更改WORKDIR
为/app/
并重建您的图像。
推荐阅读
- wordpress - 我可以在不使用 WordPress 重定向的情况下在 URL 上强制使用斜杠吗?
- android - Firebase:如何从集合中只获取一个文档?防止从数据库中读取的数量
- firebase - 如何减少 Firebase Cloud Firestore 上的读取操作?
- node.js - jenkins作业运行时如何为nodejs项目创建.env文件
- javascript - 如何使用变量获取 localStorage 数组项的值?
- java - 在 Selenium Java 中获取 ElementNotInteractableException 错误
- c++ - 什么是变量类型位(32)?
- google-cloud-platform - 在 GCP 上授予 IAM 权限“dialogflow.agents.restore”所需的 IAM 角色是什么
- swift - 应用程序终止后如何在 iOS 中获取位置或任何更新?
- elasticsearch - 如何在弹性搜索中为每小时访问者构建数据