Sco*_*ott 4 docker reactjs docker-compose
我使用create-react-app创建了一个应用程序,并设置了 docker compose 来设置容器并启动应用程序。当应用程序在根目录中时,应用程序启动并且实时重新加载工作。但是当我将应用程序移动到子目录时,我可以启动应用程序,但实时重新加载不起作用。
这是工作设置:
文件
FROM node:7.7.2
ADD . /code
WORKDIR /code
RUN npm install
EXPOSE 3000
CMD npm start
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
version: "2"
services:
client:
build: .
ports:
- "3000:3000"
volumes:
- .:/code
Run Code Online (Sandbox Code Playgroud)
目录结构
app
- node_modules
- docker-compose
- Dockerfile
- package.json
- src
- public
Run Code Online (Sandbox Code Playgroud)
这是我想要的结构:
app
- server
- client
/ node_modules
/ Dockerfile
/ package.json
/ src
/ public
- docker-compose.yml
Run Code Online (Sandbox Code Playgroud)
我已经尝试了我能想到的所有变体,但实时重新加载不起作用。
我必须做的第一件事是更改构建位置:
version: "2"
services:
client:
build: ./client
ports:
- "3000:3000"
volumes:
- .:/code
Run Code Online (Sandbox Code Playgroud)
然后我在尝试运行时遇到错误docker-compose up:
npm ERR! enoent ENOENT: no such file or directory, open '/code/package.json'
Run Code Online (Sandbox Code Playgroud)
所以我将音量更改为- .:/client/code并重建并运行命令,应用程序启动,但没有实时重新加载。
无论如何要在应用程序位于子目录中时执行此操作?
移动本地目录时,容器内的路径没有区别。所以你只需要更改本地引用。
卷挂载应该来自 ./client
version: "2"
services:
client:
build: ./client
ports:
- "3000:3000"
volumes:
- ./client:/code
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6454 次 |
| 最近记录: |