Docker与子目录组合,并实时重新加载

我使用create-react-app创build了一个应用程序,并设置了docker compose来设置容器并启动应用程序。 当应用程序在根目录中时,应用程序启动并实时重新加载。 但是,当我把应用程序移动到一个子目录,我可以让应用程序启动,但实时重新加载不起作用。

这是工作设置:

Dockerfile

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

泊坞窗,compose.yml

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

目录结构

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

这是我想要的结构:

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

我试过了我能想到的所有变化,但实时重新加载不起作用。

我必须做的第一件事是更改构build位置:

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

然后我试图运行docker-compose up时出错:

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

所以我把音量改为- .:/client/code ,重新- .:/client/code并运行命令,应用程序启动了,但没有实时重新加载。

无论如何,当应用程序在一个子目录中做到这一点?

移动本地目录时,容器内部的path没有区别。 所以你只需要改变本地引用。

卷挂载应该来自./client

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