2017-05-21 66 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'的路徑。那是我的錯誤。 –