# shopTNT开源商城系统-部署 **Repository Path**: bbc-se/deploy ## Basic Information - **Project Name**: shopTNT开源商城系统-部署 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-05 - **Last Updated**: 2026-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 部署说明(deploy) Docker Compose 一键拉起 MySQL、Redis、RabbitMQ、Elasticsearch、XXL-JOB、Seata Server。当前分支产品配置固定读取 **`config/product/shoptnt/`**;中间件在 **`config/middleware/seata/`**。 ## 目录结构(config) ```text config/ product/ # 当前分支产品配置,deploy.sh 自动读取 shoptnt shoptnt/ middleware/ # 中间件(与产品线分开) seata/ application.yml # TC 配置(store.mode=db) mysql/z_seata.sql # Seata 库表 DDL(z_ 保证最后执行,见下文) ``` **Seata 事务状态** 存在 **MySQL 库 `seata`**(与业务库同一实例;首次空库由 `mysql/init/z_seata.sql` 创建)。新增产品线时请复制 **`config/middleware/seata/mysql/z_seata.sql`** 到该产品 **`mysql/init/`**。 ## 运行条件 - Docker(支持 `docker compose` 或 `docker-compose`) - 在 **`deploy` 目录** 下执行脚本(与 `docker-compose.yml` 同级) ## 部署命令 ```bash cd deploy chmod +x deploy.sh # 首次需要 ./deploy.sh # 后台启动全部服务 ./deploy.sh down # 停止并删除容器(数据仍在 ../data/shoptnt/) ``` 示例: ```bash ./deploy.sh ./deploy.sh down ``` ## 配置目录要求 产品在 **`config/product/shoptnt/`** 下需包含: - `mysql/my.cnf` - `mysql/init/`(首次空库时执行的 `.sql`) - `es/IKAnalyzer.cfg.xml` **Seata**(全局一份):`config/middleware/seata/`(`application.yml` 中 `store.mode: db`)。**不再使用本地 `sessionStore` 目录**。 无 `.env` 文件;MySQL / Redis 密码写在 `docker-compose.yml` 中(Seata 连库账号与 root 一致,见 `application.yml`)。 **从 file 模式改为 db 模式后**:若曾生成过 `data/seata/sessionStore`,可手动删除该目录;**已有 MySQL 数据卷**不会自动执行 `z_seata.sql`,需在库中**手工执行** `config/middleware/seata/mysql/z_seata.sql` 或重建数据卷。 ## 数据目录 持久化数据在 **`deploy` 上一级** 的 `data/shoptnt/`(与 `data/seata/` 并列)。 ## 访问信息(默认) | 服务 | 说明 | |------|------| | MySQL | 端口 `3306`,业务库名 **`shoptnt`**,用户 `root`,密码见 `docker-compose.yml` | | Redis | 端口 `6379`,密码见 `docker-compose.yml` | | XXL-JOB | `http://<服务器IP>:8080/xxl-job-admin`(控制台默认账号以镜像为准,请及时修改) | | RabbitMQ 管理台 | `http://<服务器IP>:15672`,默认 `guest` / `guest` | | Seata TC | 端口 `8091`;状态存 MySQL **`seata`** 库;事务组见 `file.conf` | ## 注意事项 1. **停止当前产品**:执行 `./deploy.sh down`,避免 **3306 等端口占用**。 2. **MySQL init**:仅在 **该产品的 MySQL 数据目录为空、首次初始化** 时执行;已有数据后,仅改 `mysql/init` 里的 SQL **不会**自动重跑。 3. **为什么只有 `shoptnt` 库、没有 `seata` / `xxl_job`?**(旧版曾用 `seata.sql` 时)文件名排序是 **`database.sql` → `seata.sql` → `xxl_job2.2.0.sql`**。MySQL 官方镜像对 `docker-entrypoint-initdb.d` 里脚本 **通常按顺序执行,且前一条失败会中止后续脚本**。若 **`seata.sql` 执行报错**(例如 `distributed_lock` 重复插入、语法等),**后面的 `xxl_job2.2.0.sql` 根本不会执行**,看起来就像「只导入了 shoptnt」。仓库已改为 **`z_seata.sql`**(排在 `database.sql`、`xxl_job2.2.0.sql` **之后**),且对 `distributed_lock` 使用 **`INSERT IGNORE`**,降低失败概率;**新增产品线**请带上 **`z_seata.sql`**。 4. **新增产品分支**:每个产品独立分支内保留 `config/product/shoptnt/`,替换该目录下的 `mysql/init` 与 `es` 配置即可(记得带上 **`z_seata.sql`**)。 ## 手动使用 Docker Compose(不经过 deploy.sh) ```bash export PRODUCT=shoptnt docker compose -p "deploy_${PRODUCT}" -f docker-compose.yml up -d ``` ## 技术栈(容器) - MySQL 5.7、Redis 6、RabbitMQ 3.8、Elasticsearch 7.9(单节点 + IK)、XXL-JOB Admin 2.2.0、Seata Server(`seataio/seata-server:2.0.0`,见 `docker-compose.yml`)