繁体   English   中英

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

[英]How to mount host codes to container in docker?

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

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

我的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

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

更改代码后,它不会自动重新加载。 您必须重新启动该过程才能发生。

我建议在您的开发环境中使用Nodemon使其自动发生。 https://nodemon.io/

只要确保您没有将nodemon部署到生产中即可。 这不是为了那个。 这是一个开发工具。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM