使用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);
});
保存,然后通过邮递员提出请求 我仍然看到“嘎嘎!”而不是“ Double Quack”。
我确实有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"]
知道为什么会这样吗?
答案 0 :(得分:0)
您的dockerfile.dev
的{{1}}中有WORKDIR
,您正在将源代码复制到该目录中。
您的/usr/app/
文件正在将卷映射到docker-compose.yml
。
一种解决方案是将/app
更改为WORKDIR
并重建图像。