Files
EasyCard/docs/本地中间件环境说明.md
陈子默 74543cb9bf docs: 补充项目设计与环境文档
- 增加产品功能、技术方案与数据库设计说明

- 增加本地中间件环境与联调说明
2026-03-20 12:45:23 +08:00

167 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 本地容器环境说明
## 1. 目标
本文档说明如何在本机通过 Docker Compose 快速启动电子名片项目所需的完整容器环境。
当前提供的服务包括:
- MySQL 8.0
- Redis 7
- MinIO
- Spring Boot 后端
- Vue 管理后台Nginx 托管)
对应文件:
- [docker-compose.yml](/Users/slience/postgraduate/easycard/docker-compose.yml)
- [MySQL Dockerfile](/Users/slience/postgraduate/easycard/docker/mysql/Dockerfile)
- [MySQL 配置](/Users/slience/postgraduate/easycard/docker/mysql/conf.d/my.cnf)
- [Redis 配置](/Users/slience/postgraduate/easycard/docker/redis/redis.conf)
- [Backend Dockerfile](/Users/slience/postgraduate/easycard/docker/backend/Dockerfile)
- [Frontend Dockerfile](/Users/slience/postgraduate/easycard/docker/frontend-admin/Dockerfile)
- [Nginx 配置](/Users/slience/postgraduate/easycard/docker/frontend-admin/nginx.conf)
## 2. 启动方式
在项目根目录执行:
```bash
docker compose up -d --build
```
查看状态:
```bash
docker compose ps
```
停止并保留数据卷:
```bash
docker compose down
```
停止并删除数据卷:
```bash
docker compose down -v
```
## 3. 服务说明
### 3.1 MySQL
- 容器名:`easycard-mysql`
- 数据库:`easycard`
- 用户:`root`
- 密码:`root`
说明:
- 首次启动时会自动执行 [easycard_init.sql](/Users/slience/postgraduate/easycard/database/mysql/easycard_init.sql)
- 该脚本当前只负责创建 `easycard` 数据库
- 表结构、平台基础数据、演示数据由后端启动后的 Flyway 脚本统一执行
- 数据持久化目录:`docker/data/mysql`
- 当前不对宿主机暴露端口,仅允许 Docker 内网访问
### 3.2 Redis
- 容器名:`easycard-redis`
- 默认未设置密码
说明:
- 当前为本地开发配置
- 后续若进入联调或准生产环境,建议补充访问密码
- 数据持久化目录:`docker/data/redis`
- 当前不对宿主机暴露端口,仅允许 Docker 内网访问
### 3.3 MinIO
- 容器名:`easycard-minio`
- 用户名:`minioadmin`
- 密码:`minioadmin`
说明:
- `minio-init` 会在启动后自动创建 `easycard` bucket
- 当前脚本默认给该 bucket 开启下载访问,便于本地联调图片访问
- 数据持久化目录:`docker/data/minio`
- 当前不对宿主机暴露端口,仅允许 Docker 内网访问
### 3.4 Backend
- 容器名:`easycard-backend`
- 端口:`8112`
说明:
- 使用 [docker/backend/Dockerfile](/Users/slience/postgraduate/easycard/docker/backend/Dockerfile) 进行多阶段构建
- 容器启动时使用 `docker` profile
- 日志目录挂载到 `docker/data/backend/logs`
- 首次启动会等待 MySQL 健康检查通过后再启动
接口地址:
- [http://localhost:8112/api/v1/system/ping](http://localhost:8112/api/v1/system/ping)
- [http://localhost:8112/swagger-ui/index.html](http://localhost:8112/swagger-ui/index.html)
### 3.5 Frontend Admin
- 容器名:`easycard-frontend-admin`
- 端口:`8081`
说明:
- 使用 [docker/frontend-admin/Dockerfile](/Users/slience/postgraduate/easycard/docker/frontend-admin/Dockerfile) 构建前端产物
- 通过 Nginx 托管前端静态资源
- Nginx 会将 `/api``/swagger-ui``/v3/api-docs` 反向代理到 backend 服务
- Nginx 日志目录挂载到 `docker/data/nginx/logs`
访问地址:
- [http://localhost:8081](http://localhost:8081)
## 4. 与后端配置的对应关系
当前后端默认配置位于:
- [application.yml](/Users/slience/postgraduate/easycard/backend/easycard-boot/src/main/resources/application.yml)
容器内部联通使用:
- `DB_HOST=mysql`
- `DB_PORT=3306`
- `DB_NAME=easycard`
- `DB_USERNAME=root`
- `DB_PASSWORD=root`
- `REDIS_HOST=redis`
- `REDIS_PORT=6379`
- `REDIS_DATABASE=0`
- MinIO 服务名:`minio`
## 5. 数据挂载目录
当前容器数据与日志均挂载到宿主机目录:
- `docker/data/mysql`
- `docker/data/redis`
- `docker/data/minio`
- `docker/data/backend/logs`
- `docker/data/nginx/logs`
这样做的好处:
- 便于本地排查数据
- 重建容器后数据仍保留
- 便于备份和手工清理
## 6. 注意事项
- `easycard_init.sql` 当前仅适用于手工建库和 Docker 首次建库
- 若重新执行初始化脚本,请先删除 MySQL 数据卷,否则 MySQL 不会再次执行 `/docker-entrypoint-initdb.d`
- 若需要重建表结构和演示数据,请删除 MySQL 数据后重新启动 backend由 Flyway 重新执行版本脚本
- 若本机已有 8112 或 8081 端口占用,需要同步调整后端和前端端口映射
- 当前仅 `frontend-admin(8081)``backend(8112)` 对宿主机暴露端口