从主机映射卷更改时容器文件未更新

Container files not updated when changed from the host mapped volume

我有以下 docker-compose.yml:

version: '3'

services:
  web:
    build: 
      context: .
      dockerfile: ./.docker/node.dockerfile
    volumes:
      - D:\Proj\Web:/app
    ports:
      - '3000:3000'
    depends_on: 
      - 'db'
    networks:
      - holder-network
    restart: on-failure
    tty: true


  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - holder-network
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: P@ssw0rd
      MYSQL_DATABASE: holder_db
      MYSQL_USER: holder_usr
      MYSQL_PASSWORD: P@ssw0rd


networks:
  holder-network:
    driver: bridge

volumes:
  db_data:

node.dockerfile:

FROM node:7.10

MAINTAINER Juliano Nunes

RUN mkdir /var/www

RUN npm install nodemon -g

WORKDIR /var/www

ADD . /var/www

RUN npm install

CMD nodemon

我正在从主机更改 D:\Proj\Web 下的文件,但它不会更新容器中的文件。为什么?

要在 docker 上为 windows 映射容器 运行 中的主机卷,您需要确保您的驱动器共享到嵌入式 VM。否则,该目录将从 VM 的文件系统挂载,该文件系统在该位置将为空。您需要进入Windows上的docker设置,将D盘添加到共享目录列表中。请在此处查看 docker 的相关文档:https://docs.docker.com/docker-for-windows/#shared-drives

我发现了错误。我的 docker-compose.yml 使用 /app 作为路径,node.dockerfile 使用 /var/www.

这是更新的(工作)版本:

version: '3'

services:
  web:
    build: 
      context: .
      dockerfile: ./.docker/node.dockerfile
    volumes:
      - D:\Proj\Web:/var/www
    ports:
      - '3000:3000'
    depends_on: 
      - 'db'
    networks:
      - holder-network
    restart: on-failure
    tty: true


  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - holder-network
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: P@ssw0rd
      MYSQL_DATABASE: holder_db
      MYSQL_USER: holder_usr
      MYSQL_PASSWORD: P@ssw0rd


networks:
  holder-network:
    driver: bridge

volumes:
  db_data: