41 lines
1.2 KiB
YAML
41 lines
1.2 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
backend:
|
|
build: ./backend
|
|
# 启动命令:明确指定 backend.api.route
|
|
command: uvicorn backend.api.route:app --host 0.0.0.0 --port 8000 --reload
|
|
ports:
|
|
- "3001:8000"
|
|
volumes:
|
|
# 关键点:挂载到 /app/backend
|
|
# 这样容器内就是 /app/backend/api/route.py
|
|
- ./backend:/app/backend
|
|
- ./data:/data
|
|
- ./outputs:/outputs
|
|
environment:
|
|
- PYTHONUNBUFFERED=1
|
|
restart: unless-stopped
|
|
|
|
frontend:
|
|
build:
|
|
context: ./frontend-react
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "3000:5173"
|
|
volumes:
|
|
# 挂载前端源码,实现代码热更新
|
|
- ./frontend-react:/app
|
|
# 匿名卷:防止宿主机的 node_modules 覆盖容器内的模块
|
|
# (这是前端 Docker 开发的最佳实践,防止因系统差异导致依赖不兼容)
|
|
- /app/node_modules
|
|
environment:
|
|
# 告诉前端后端地址
|
|
# 注意:这里使用 localhost 是因为它们都映射到了宿主机
|
|
# 在容器内部通信时,前端通过 Vite 代理转发到 http://backend:8000
|
|
- VITE_BACKEND_URL=http://localhost:3001
|
|
command: npm run dev -- --host 0.0.0.0
|
|
depends_on:
|
|
- backend
|
|
restart: unless-stopped
|