Docker 一键启动
2026/5/25大约 2 分钟
Docker 一键启动
platform master 已经内置 Docker 启动链路,当前涉及这些文件:
docker-compose.ymlscripts/docker-up.shscripts/docker-down.shdeploy/.env.exampledeploy/nginx/default.confplatform-admin/src/main/resources/application-docker.ymlplatform-api/src/main/resources/application-docker.yml
适用场景
- 需要一条命令拉起 MySQL、Redis、后端服务和管理台
- 希望用容器网络隔离基础依赖
- 需要在本地或测试环境快速验证完整访问链路
启动前提
先准备构建产物:
scripts/build-jars.sh
scripts/build-admin-ui.sh启动脚本会检查以下产物是否存在:
deploy/packages/platform-admin.jardeploy/packages/platform-api.jardeploy/packages/platform-admin-ui-dist/index.html
缺少任意一个,scripts/docker-up.sh 都会直接退出并提示先构建。
环境变量
首次启动前,如需调整端口、数据库名、密码或 JVM 参数,先复制:
cp deploy/.env.example deploy/.env默认示例值:
TZ=Asia/Shanghai
MAVEN_PROFILE=dev
NGINX_PORT=8888
MYSQL_PORT=3306
REDIS_PORT=6379
MYSQL_DATABASE=platform
MYSQL_ROOT_PASSWORD=root1234
REDIS_PASSWORD=
PLATFORM_ADMIN_JAVA_OPTS=-Xms256m -Xmx512m
PLATFORM_API_JAVA_OPTS=-Xms256m -Xmx512m重点字段:
NGINX_PORT:对外访问端口,默认8888MYSQL_DATABASE:默认数据库名MYSQL_ROOT_PASSWORD:MySQL root 密码PLATFORM_ADMIN_JAVA_OPTS/PLATFORM_API_JAVA_OPTS:后端 JVM 参数
启动与停止
启动:
scripts/docker-up.sh停止:
scripts/docker-down.shscripts/docker-up.sh 还会自动完成这些动作:
- 检查
docker和docker compose是否可用 - 自动创建
deploy/data/mysql与deploy/data/redis - 如果
deploy/.env不存在,则从.env.example自动生成 - 读取
NGINX_PORT并输出最终访问地址
会启动哪些服务
docker-compose.yml 当前会一键启动:
mysqlredisplatform-adminplatform-apinginx
当前镜像与运行方式:
mysql:mysql:8.0.36redis:redis:7.2-alpineplatform-admin:eclipse-temurin:21-jreplatform-api:eclipse-temurin:21-jrenginx:nginx:1.27-alpine
默认访问地址
脚本默认输出:
- 管理台:
http://localhost:8888 - 后台接口:
http://localhost:8888/platform-framework - 商城接口:
http://localhost:8888/platform-framework-api
如果你改了 deploy/.env 里的 NGINX_PORT,这里的端口也会跟着变化。
Docker profile 说明
后端容器都显式启用:
SPRING_PROFILES_ACTIVE=docker对应的 application-docker.yml 只覆盖容器内的 MySQL 和 Redis 地址,例如:
- MySQL Host:
mysql - Redis Host:
redis
这意味着 Docker 启动不会改你现有的 dev/test/prod 口径,只是在容器运行时切到独立的 docker profile。
数据与初始化
当前挂载关系:
./deploy/data/mysql:/var/lib/mysql./deploy/data/redis:/data./_sql:/docker-entrypoint-initdb.d:ro
效果是:
- MySQL 首次启动时,会自动执行仓库
_sql/目录下的初始化脚本 - 如果
deploy/data/mysql已有数据,则不会重复导入 - Redis 数据会持久化到
deploy/data/redis
Nginx 在 Docker 里的职责
deploy/nginx/default.conf 当前承担两件事:
- 托管
platform-admin-ui-dist静态文件 - 反向代理后端接口
当前代理规则:
/platform-framework/->http://platform-admin:8080/platform-framework//platform-framework-api/->http://platform-api:8081/platform-framework-api/
因此对外只暴露一个 NGINX_PORT,但仍然能同时访问管理台和两套接口。
使用建议
- 纯本地开发联调时,仍然可以走 环境与启动 的手工方式
- 需要快速验收整套链路时,优先使用 Docker
- 如果想重新初始化数据库,需要先处理
deploy/data/mysql,否则_sql/不会重复执行
