目录结构
projectroot/
docker-compose.yml
frontend/
Dockerfile
src/
node_modules
package.json
....
projectroot / frontend / 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中。如果运行容器并进行猛击,则会看到包含主机/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上。我缺少什么?