Skip to content

Docker Compose 双栈部署

两套互不干扰的 MySQL + API + Web,用于对比 Python / Java 后端,或本地演示。

Web(Nginx)APIMySQL(宿主机端口)
Pythonhttp://localhost:8081api-python:80003307
Javahttp://localhost:8082api-java:80803308

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.confPython 栈 API 反代
docker/nginx/java-web.confJava 栈 API 反代
packages/server-python/DockerfilePython API
packages/server-java/DockerfileJava API

环境变量

docker/compose/.env.example。生产务必修改:

  • JWT_SECRET
  • MYSQL_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-pythonmysql-java,宿主机连 localhost:3307 / 3308

相关文档

Xichen Full Stack 内部文档