Docker compose with subdirectory and live reload

I created an app using create-react-app and set up docker compose to set up the container and start the app. When the app is in the root directory, the app starts and the live reload works. But when I move the app to a subdirectory, I can get the app to start, but the live reload does not work.

Here’s the working setup:

  • Can not give any access using Docker
  • How can I find which container(s) have mounted a specific volume?
  • PostgreSQL on AWS ECS: psycopg2.OperationalError invalid port number 5432
  • Docker WordPress Nginx Folder Structure?
  • What Docker image size is considered 'too large'?
  • docker network link to 2 or multiple containers
  • Dockerfile

    FROM node:7.7.2
    
    ADD . /code
    
    WORKDIR /code
    
    RUN npm install
    
    EXPOSE 3000
    
    CMD npm start
    

    docker-compose.yml

    version: "2"
    
    services:
      client:
        build: .
        ports:
          - "3000:3000"
        volumes:
          - .:/code
    

    Directory structure

    app
    - node_modules
    - docker-compose
    - Dockerfile
    - package.json
    - src
    - public
    

    Here’s the structure that I would like:

    app
    - server
    - client
      / node_modules
      / Dockerfile
      / package.json
      / src
      / public
    - docker-compose.yml
    

    I’ve tried every variation that I can think of, but the live reload will not work.

    The first thing I had to do was change the build location:

    version: "2"
    
    services:
      client:
        build: ./client
        ports:
          - "3000:3000"
        volumes:
          - .:/code
    

    Then I got an error when trying to run docker-compose up:

    npm ERR! enoent ENOENT: no such file or directory, open '/code/package.json'
    

    So I changed the volume to - .:/client/code and rebuilt and ran the command and the app started, but no live reload.

    Anyway to do this when the app is in a subdirectory?

  • what is the default password of CoreOS? [closed]
  • Why doesn't docker tomcat doesn't override a war properties file with a properties file from a shared dir?
  • Docker-machine and Openstack / SSH
  • Where is the Postgres username/password being created in this Dockerfile?
  • docker deploy to docker for mac swarm mode not working, how to troubleshoot?
  • Run IIS Windows container
  • One Solution collect form web for “Docker compose with subdirectory and live reload”

    There’s no difference to the paths inside the container when you move your local directory. So you only need to change the local references.

    The volume mount should come from ./client

    version: "2"
    
    services:
      client:
        build: ./client
        ports:
          - "3000:3000"
        volumes:
          - ./client:/code
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.