Appearance
Docker Compose 双栈部署
两套互不干扰的 MySQL + API + Web,用于对比 Python / Java 后端,或本地演示。
| 栈 | Web(Nginx) | API | MySQL(宿主机端口) |
|---|---|---|---|
| Python | http://localhost:8081 | api-python:8000 | 3307 |
| Java | http://localhost:8082 | api-java:8080 | 3308 |
Web 通过 Nginx 反代 /api,前端 VITE_API_BASE_URL 留空,浏览器同源访问,无需 CORS 配置。
快速启动
bash
# 1. 环境变量(可选,有默认值)
cp docker/compose/.env.example .env
# 2. 构建并启动 6 个容器
docker compose up -d --build
# 3. 等待 healthy 后初始化 RBAC 种子数据
sh docker/compose/init-stacks.sh
# Windows PowerShell:
# .\docker\compose\init-stacks.ps1默认账号:admin / admin123
仅启动其中一套
bash
# Python
docker compose up -d --build mysql-python api-python web-python
# Java
docker compose up -d --build mysql-java api-java web-java目录与镜像
| 路径 | 说明 |
|---|---|
docker-compose.yml | 双栈编排 |
docker/web/Dockerfile | 构建 web 静态资源 + Nginx |
docker/nginx/python-web.conf | Python 栈 API 反代 |
docker/nginx/java-web.conf | Java 栈 API 反代 |
packages/server-python/Dockerfile | Python API |
packages/server-java/Dockerfile | Java API |
环境变量
见 docker/compose/.env.example。生产务必修改:
JWT_SECRETMYSQL_ROOT_PASSWORD/MYSQL_PASSWORD
数据持久化
| Volume | 说明 |
|---|---|
mysql_python_data / mysql_java_data | 各自 MySQL 数据 |
api_python_uploads / api_java_uploads | 上传文件 |
清空重来:
bash
docker compose down -v
docker compose up -d --build
sh docker/compose/init-stacks.sh与纯 MySQL 开发 compose 的区别
旧用法 docker compose up mysql 已替换为双栈模型。若只需一个 MySQL 给本机 pnpm dev 用,可只起 mysql-python 或 mysql-java,宿主机连 localhost:3307 / 3308。