本地 / Docker 部署
本文说明如何使用仓库内 docker-compose.yml 一键拉起 ECShopX Java 本地环境。命令与端口以根目录 docker-compose.yml 为准;Compose 场景下 XXL-JOB Admin 宿主机端口为 8080(9080 仅适用于非 Compose 的本地 Maven / 单独 docker run 配置)。
前置要求
- Docker 24+ 与 Docker Compose v2(macOS 推荐 Docker Desktop;启用 BuildKit 以利用 Maven 缓存层)
- 至少 4 GB 可用内存(建议给 Docker Desktop 分配 ≥ 6 GB)
- 宿主机端口未被占用(见下表)
一键启动
cd ecshopx-java
docker compose up -d # 首次会构建镜像 + 导入 SQL,耗时 5~15 分钟
docker compose logs -f ecshopx-javadocker compose up -d 会完成:
- 拉起
mysql:8.0,按顺序自动导入docker/tables_xxl_job.sql与docker/ecshopx.sql(调度库 + 业务表与演示数据); - 拉起
redis:7-alpine(密码redispassword,AOF 持久化); - 拉起
xuxueli/xxl-job-admin:2.5.0,使用 MySQL 中的xxl_job库; - 基于
docker/Dockerfile构建ecshopx-java:latest,在依赖健康后启动应用。
四个容器共享 bridge 网络 ecshopx,通过服务名互访(mysql / redis / xxl-job-admin);业务参数通过 APP_ARGS 以 Spring Boot CLI 风格注入。
首次数据导入约 1~3 分钟,healthcheck 已放宽 retries;整体首次构建常见 5~15 分钟。
端口与访问地址(Compose)
| 服务 | 宿主机端口 | URL / 连接 | 默认账号 |
|---|---|---|---|
| ecshopx-java HTTP API | 18080 | http://localhost:18080/api/ | — |
| ecshopx-java 静态资源 | 18080 | http://localhost:18080/storage/ | — |
| 微信回调 | 18080 | http://localhost:18080/wechatAuth/ | — |
| XXL-JOB Executor(Admin 回调) | 19999 | 容器内监听,宿主机映射便于调试 | — |
| XXL-JOB Admin 控制台 | 8080 | http://localhost:8080/xxl-job-admin | admin / 123456 |
| MySQL | 3306 | localhost:3306 | 业务 ecshopx / ecshopx;root root / rootpassword |
| Redis | 6379 | localhost:6379 | 密码 redispassword |
端口说明:
docker-compose.yml将 XXL-JOB Admin 映射为8080:8080。若使用 非 Compose 方式(本地spring-boot:run或自备 Admin),application-local.properties中xxl.job.admin.addresses常见为http://127.0.0.1:9080/xxl-job-admin——该9080不适用于 Compose 编排,仅作本地开发对照。
对外 API 路径前缀:/api/、/storage/、/wechatAuth/,可与 ecshopx-admin / ecshopx-vshop 等前端工程对接。
默认管理员(业务库演示数据):
- 账号:
admin - 密码:
Shopex123
常用编排命令
# 查看容器与健康状态
docker compose ps
# 查看单个服务日志
docker compose logs -f ecshopx-java
docker compose logs -f xxl-job-admin
# 修改代码后重建并热替换 Java 服务
docker compose up -d --build ecshopx-java
# 进入容器排查
docker compose exec ecshopx-java sh
docker compose exec mysql mysql -uecshopx -pecshopx ecshopx
# 停止全部服务(保留数据卷 mysql/redis/logs)
docker compose down
# 彻底清空(包括数据库 / Redis AOF 数据)
docker compose down -vdocker compose down 默认保留命名卷 ecshopx-mysql-data、ecshopx-redis-data、ecshopx-app-logs;若需重新导入 SQL 请使用 docker compose down -v。
单独构建镜像(无需 Compose)
若已自备 MySQL / Redis / XXL-JOB Admin,可只构建并运行 Java 镜像:
cd ecshopx-java
docker build -f docker/Dockerfile -t ecshopx-java:latest .
docker run --rm -p 18080:18080 -p 19999:19999 \
-e JAVA_OPTS="-Xms512m -Xmx1024m" \
-e APP_ARGS="--spring.datasource.url=jdbc:mysql://<host>:3306/ecshopx \
--spring.datasource.username=ecshopx \
--spring.datasource.password=ecshopx \
--spring.data.redis.host=<host> \
--spring.data.redis.password=redispassword \
--xxl.job.admin.addresses=http://<host>:9080/xxl-job-admin \
--xxl.job.accessToken=ecshopx-cron-dev" \
ecshopx-java:latest此处 Admin 示例端口 9080 适用于非 Compose 部署;请与实际 Admin 部署端口一致。
本地 Maven 开发(非 Compose)
需自备 MySQL / Redis(或仅启动 Compose 中的中间件)。在 ecshopx-java 目录:
./mvnw -pl ecshopx-bootstrap -am spring-boot:run \
-Dspring-boot.run.profiles=local本地配置样例:ecshopx-bootstrap/src/main/resources/application-local.properties。启动成功后 API 基址:http://localhost:18080/api/。
