Search code examples
dockerdocker-composedocker-for-windowsdocker-desktop

Container files not updated when changed from the host mapped volume


I have the following 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:

And the 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

I'm changing the files under D:\Proj\Web from the host, however it doesn't update the files in the container. Why?


Solution

  • I've found the error. My docker-compose.yml was using /app as the path and node.dockerfile was using /var/www.

    Here's the updated (working) version:

    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: