使用 docker-compose.yml 文件中的卷进行代码同步,但无法正常工作



index.js

const express = require('express')
const router = require('./routes')
const app = express()
app.use(router)
app.listen(3000, () => {
console.log('Server is up on port 3000')
})

路由.js

const express = require('express')
const todos = require('./_data')
const router = new express.Router()
router.get('/', (req, res) => {
res.send('Todo APP!!!')
})
router.get('/todos', (req, res) => {
res.send(todos)
})
module.exports = router

Dockerfile

FROM node:alpine
WORKDIR /app
COPY package.json . 
RUN npm install 
COPY . .
CMD ["npm", "run", "start"]

docker compose

version: '3'
services:
node_backend_api:
build: .
ports: 
- "3000:3000"
volumes:
- "/app/node_modules"
- ".:/app"
environment:
- CHOKIDAR_USEPOLLING=true 

使用docker-compose.yml文件中的卷进行源代码同步。当我更改本地项目的源代码时,它也会在docker容器中更改。当我点击命令";码头工人组成";但当我想看到输出时,它不能反映web浏览器中的变化。

因此,首先从dockerfile中删除:COPY . .。您不希望将文件从主机复制到容器,而是希望使用卷。

然后,从docker compose.yml文件中删除- "/app/node_modules"。这样做毫无意义(顺便问一下,你为什么要这样做?请阅读文档:https://docs.docker.com/compose/compose-file/compose-file-v3/#volumes)。

最后,在构建它的同时重新构建堆栈:

docker-compose up --build

最新更新