Skip to content

本地 / 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)
  • 宿主机端口未被占用(见下表)

一键启动 ​

bash
cd ecshopx-java
docker compose up -d              # 首次会构建镜像 + 导入 SQL,耗时 5~15 分钟
docker compose logs -f ecshopx-java

docker compose up -d 会完成:

  1. 拉起 mysql:8.0,按顺序自动导入 docker/tables_xxl_job.sql 与 docker/ecshopx.sql(调度库 + 业务表与演示数据);
  2. 拉起 redis:7-alpine(密码 redispassword,AOF 持久化);
  3. 拉起 xuxueli/xxl-job-admin:2.5.0,使用 MySQL 中的 xxl_job 库;
  4. 基于 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 API18080http://localhost:18080/api/—
ecshopx-java 静态资源18080http://localhost:18080/storage/—
微信回调18080http://localhost:18080/wechatAuth/—
XXL-JOB Executor(Admin 回调)19999容器内监听,宿主机映射便于调试—
XXL-JOB Admin 控制台8080http://localhost:8080/xxl-job-adminadmin / 123456
MySQL3306localhost:3306业务 ecshopx / ecshopx;root root / rootpassword
Redis6379localhost: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

常用编排命令 ​

bash
# 查看容器与健康状态
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 -v

docker compose down 默认保留命名卷 ecshopx-mysql-data、ecshopx-redis-data、ecshopx-app-logs;若需重新导入 SQL 请使用 docker compose down -v。

单独构建镜像(无需 Compose) ​

若已自备 MySQL / Redis / XXL-JOB Admin,可只构建并运行 Java 镜像:

bash
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 目录:

bash
./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/。

相关章节 ​