refactor: 移除 docker 目录,中间件编排收敛至根目录 docker-compose.yml

- docker-compose.yml 移至根目录,my.cnf/redis.conf 配置内联为 command 参数,数据持久化改用命名卷
- 删除 docker/ 目录(含运行时残留数据),清理 .gitignore 相关规则
- 同步 README 目录结构说明
This commit is contained in:
Ray.Hao
2026-08-22 12:00:01 +08:00
parent 5085d4c7e0
commit a33de52700
10 changed files with 78 additions and 2409 deletions

4
.gitignore vendored
View File

@@ -12,8 +12,4 @@ target
logs
.history
docker/*/data/
docker/minio/config
docker/xxljob/logs
application-youlai.yml

View File

@@ -201,8 +201,6 @@ Detailed guide: https://www.youlai.tech/docs/server/spring-boot/quick-start.html
youlai-boot/
├── docker/ # Docker orchestration
├── docs/ # Docs and image assets
├── sql/ # Database init scripts
@@ -237,6 +235,8 @@ youlai-boot/
│ └── system/ # Business (user/role/menu/dept/dict etc.)
├── docker-compose.yml # One-click middleware orchestration (MySQL/Redis/MinIO/Xxl-Job)
└── pom.xml # Maven dependency management
```

View File

@@ -107,7 +107,6 @@
```
youlai-boot/
├── docker/ # Docker 部署编排
├── docs/ # 项目文档与图片资源
├── sql/ # 数据库初始化脚本
├── src/ # 源码目录
@@ -125,6 +124,7 @@ youlai-boot/
│ │ ├── sms/ # 短信服务
│ │ └── sse/ # SSE 消息推送
│ └── system/ # 系统业务(用户/角色/菜单/部门/字典等)
├── docker-compose.yml # 中间件一键编排(MySQL/Redis/MinIO/Xxl-Job)
└── pom.xml # Maven 依赖管理
```

75
docker-compose.yml Normal file
View File

@@ -0,0 +1,75 @@
# Docker Compose 一键安装中间件 MySQL、Redis、MinIO、Xxl-Job
#
# 安装:docker compose up -d
# 卸载:docker compose down(加 -v 同时删除数据卷)
#
# 说明:
# - name 固定项目名,容器统一管理和卸载,避免与其他项目冲突
# - MySQL 首次启动时自动执行 ./sql 下初始化脚本(仅首次,数据卷已存在时跳过)
# - 中间件配置全部内联于 command 参数,无需外部配置文件
# - 数据持久化使用命名卷(docker volume 统一管理),不污染项目目录
name: youlai-boot
services:
mysql:
image: mysql:8.0.29
container_name: mysql
restart: unless-stopped
# 等价于原 my.cnf 的 utf8mb4 字符集设置(MySQL 8 其余项与默认值一致)
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_ai_ci
environment:
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
- MYSQL_ROOT_PASSWORD=123456
volumes:
- youlai-mysql-data:/var/lib/mysql
- ./sql:/docker-entrypoint-initdb.d
ports:
- 3306:3306
redis:
image: redis:7.2.3
container_name: redis
restart: unless-stopped
# --protected-mode no 允许远程连接(原 redis.conf 唯一非默认项)
command: redis-server --requirepass 123456 --appendonly no --protected-mode no
environment:
- TZ=Asia/Shanghai
volumes:
- youlai-redis-data:/data
ports:
- 6379:6379
minio:
image: minio/minio:RELEASE.2024-07-16T23-46-41Z
container_name: minio
restart: unless-stopped
command: server /data --console-address ":9001"
environment:
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin
volumes:
- youlai-minio-data:/data
ports:
- 9000:9000
- 9001:9001
xxl-job-admin:
image: xuxueli/xxl-job-admin:2.4.0
container_name: xxl-job-admin
restart: unless-stopped
environment:
PARAMS: '--spring.datasource.url=jdbc:mysql://mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=123456 --spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver'
volumes:
- youlai-xxljob-logs:/data/applogs
ports:
- 8080:8080
volumes:
youlai-mysql-data:
youlai-redis-data:
youlai-minio-data:
youlai-xxljob-logs:

View File

@@ -1,69 +0,0 @@
# 创建一个名为 "youlai-boot" 的桥接网络,在同一个网络中的容器可以通过容器名互相访问
networks:
youlai-boot:
driver: bridge
services:
mysql:
image: mysql:8.0.29
container_name: mysql
restart: unless-stopped # 重启策略:除非手动停止容器,否则自动重启
environment:
- TZ=Asia/Shanghai
- LANG= en_US.UTF-8
- MYSQL_ROOT_PASSWORD=123456 #设置 root 用户的密码
volumes:
- ./mysql/conf/my.cnf:/etc/my.cnf # 挂载 my.cnf 文件到容器的指定路径
- ./mysql/data:/var/lib/mysql # 持久化 MySQL 数据
- ../sql:/docker-entrypoint-initdb.d # 初始化 SQL 脚本目录
ports:
- 3306:3306
networks:
- youlai-boot # 加入 "youlai-boot" 网络
redis:
image: redis:7.2.3
container_name: redis
restart: unless-stopped
command: redis-server /etc/redis/redis.conf --requirepass 123456 --appendonly no # 启动 Redis 服务并添加密码为:123456,默认不开启 Redis AOF 方式持久化配置
environment:
- TZ=Asia/Shanghai
volumes:
- ./redis/data:/data
- ./redis/config/redis.conf:/etc/redis/redis.conf
ports:
- 6379:6379
networks:
- youlai-boot
minio:
image: minio/minio:RELEASE.2024-07-16T23-46-41Z
container_name: minio
restart: unless-stopped
command: server /data --console-address ":9001"
ports:
- 9000:9000
- 9001:9001
environment:
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin
volumes:
- ./minio/data:/data
- ./minio/config:/root/.minio
networks:
- youlai-boot
xxl-job-admin:
image: xuxueli/xxl-job-admin:2.4.0
container_name: xxl-job-admin
restart: unless-stopped
environment:
PARAMS: '--spring.datasource.url=jdbc:mysql://mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=123456 --spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver'
volumes:
- ./xxljob/logs:/data/applogs
ports:
- 8080:8080
networks:
- youlai-boot

View File

View File

@@ -1,20 +0,0 @@
[mysqld]
# 字符集与排序规则
character-set-server = utf8mb4 # 服务端默认字符集
collation-server = utf8mb4_0900_ai_ci # 服务端默认排序规则
# 网络与路径
datadir = /var/lib/mysql # 数据文件存放的目录
bind-address = 0.0.0.0 # 允许远程连接,默认 127.0.0.1 只允许本地连接
port = 3306 # 显式指定端口(默认3306可不写)
# 客户端字符集同步(避免乱码)
init_connect = 'SET NAMES utf8mb4' # 连接初始化时设置字符集
[client]
default-character-set = utf8mb4 # 客户端默认字符集
[mysql]
default-character-set = utf8mb4 # MySQL 命令行工具字符集

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +0,0 @@
# Docker Compose 安装中间件 MySQL、Redis、Minio、Xxl-Job
## 安装
```bash
docker-compose -f ./docker-compose.yml -p youlai-boot up -d
```
- p youlai-boot 指定命名空间,避免与其他容器冲突,这里方便管理,统一管理和卸载
## 卸载
```bash
docker-compose -f ./docker-compose.yml -p youlai-boot down
```