如何将主机代码挂载到docker中的容器?

时间:2017-03-22 05:08:29

标签: node.js docker docker-compose

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

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

我的泊坞文件

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"]

我的码头撰写文件

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

我可以成功构建并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": ""
            }
        ]

1 个答案:

答案 0 :(得分:2)

更改密码时,您的代码不会自动重新加载。您必须重新启动该过程才能实现。

我建议您在开发环境中使用Nodemon来自动执行此操作。 https://nodemon.io/

确保不将nodemon部署到生产环境。它并不意味着这一点。这是一个开发工具。