【发布时间】:2020-07-06 03:11:27
【问题描述】:
使用 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 提出第一个请求时 我看到“嘎嘎!”在我的控制台中。
现在当我将代码更改为
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"]
知道为什么会这样吗?
【问题讨论】:
-
您将卷映射到 /app,但您将代码放在 /usr/app 的容器中。因此,您正在运行的代码和您安装的代码是不一样的。尝试将您的卷安装到 /usr/app
标签: docker docker-compose docker-volume