2017-05-21 45 views
0

我有以下泊坞窗,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: [email protected] 
     MYSQL_DATABASE: holder_db 
     MYSQL_USER: holder_usr 
     MYSQL_PASSWORD: [email protected] 


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下,但它不更新容器中的文件。为什么?

回答

1

我找到了该错误。我的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: [email protected] 
     MYSQL_DATABASE: holder_db 
     MYSQL_USER: holder_usr 
     MYSQL_PASSWORD: [email protected] 


networks: 
    holder-network: 
    driver: bridge 

volumes: 
    db_data: 
+0

同样的问题,相同的解决方案。谢谢! – Ben

0

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

+0

磁带机是多克设置已经共享。容器中的目录不是空的,文件在容器启动时被复制,但是如果我从Windows(主机)编辑文件,则更改不会反映在来宾中。 –

+0

Docker不会在容器启动时复制文件,而是将目录直接映射到容器中。你用什么命令来验证这些文件是最初更新的,但以后保持在先前的状态? – BMitch

+0

我发现在我的'docker-compose.yml'中我引用了不同于'node.dockerfile'的路径。那是我的错误。 –