如何在Docker中将主机代码装载到容器中?

我有一个非常简单的代码库,如下所示

Dockerfile docker-compose.yml package.json server.js 

我的docker文件

 FROM node:alpine RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app RUN npm install COPY . /usr/src/app EXPOSE 3000 CMD ["npm", "start"] 

我的docker合成文件

 version: "3" services: web: build: . volumes: - .:/usr/src/app - /usr/src/app/node_modules ports: - "3000:3000" depends_on: - postgres postgres: image: postgres:9.6-alpine ports: - 5432:5432 

我可以构build并做docker-compose up但是我无法将我的源代码安装到容器(意思是当我编辑我的server.js并刷新浏览器时,它不会改变)。

我不确定哪些部件丢失。 有人可以帮我吗? 非常感谢!

更新 :当我检查容器,这里是挂载信息。

 "Mounts": [ { "Type": "bind", "Source": "/Users/JJ/myApp", "Destination": "/usr/src/app", "Mode": "rw", "RW": true, "Propagation": "" }, { "Type": "volume", "Name": "12e5a018e711511bfe14a8ea97465d7966696dc62a57727eeafd0de2b4a1e915", "Source": "/var/lib/docker/volumes/12e5a018e711511bfe14a8ea97465d7966696dc62a57727eeafd0de2b4a1e915/_data", "Destination": "/usr/src/app/node_modules", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ] 

您的代码在更改时不会自动重新加载。 你必须重新启动这个过程。

我build议在您的开发环境中使用Nodemon来自动实现这一点。 https://nodemon.io/

只要确保不要将nodemon部署到生产环境。 这不是为了这个。 这是一个开发工具。