当前位置: 首页 > news >正文

docker-compose安装seata

整体结构:

seata-docker/ ├── Dockerfile # Seata服务镜像构建 ├── application.yml # Seata服务配置(注册nacos、db存储) ├── docker-compose.yml └── sql/ └── seata_init.sql # TC全局事务表初始化SQL

1. 编写 Dockerfile(seata 服务镜像)

# 基础镜像 seata 1.6.1 FROM seataio/seata-server:1.6.1 # 复制自定义配置文件到容器配置目录 COPY application.yml /seata/conf/application.yml # 暴露Seata默认端口 EXPOSE 8091

2. Seata 服务配置文件 application.yml

server: port: 8091 seata: # 注册中心 nacos registry: type: nacos nacos: server-addr: nacos:8848 namespace: public group: SEATA_GROUP application: seata-server # 配置中心 nacos config: type: nacos nacos: server-addr: nacos:8848 namespace: public group: SEATA_GROUP # 存储模式 db(mysql) store: mode: db db: datasource: druid db-type: mysql driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://mysql:3306/seata_server?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false user: root password: root123456 min-conn: 5 max-conn: 30

3. 初始化 SQL seata_init.sql

CREATE DATABASE IF NOT EXISTS seata_server DEFAULT CHARACTER SET utf8mb4; USE seata_server; -- 全局事务表 CREATE TABLE IF NOT EXISTS `global_table` ( `xid` varchar(128) NOT NULL COMMENT '全局事务ID', `transaction_id` bigint DEFAULT NULL, `status` tinyint NOT NULL COMMENT '事务状态', `application_id` varchar(32) DEFAULT NULL, `transaction_service_group` varchar(32) DEFAULT NULL, `transaction_name` varchar(128) DEFAULT NULL, `timeout` int DEFAULT NULL, `begin_time` bigint DEFAULT NULL, `commit_time` bigint DEFAULT NULL, `rollback_time` bigint DEFAULT NULL, PRIMARY KEY (`xid`), KEY `idx_status` (`status`), KEY `idx_transaction_service_group` (`transaction_service_group`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 分支事务表 CREATE TABLE IF NOT EXISTS `branch_table` ( `branch_id` bigint NOT NULL, `xid` varchar(128) NOT NULL, `transaction_id` bigint DEFAULT NULL, `resource_group_id` varchar(32) DEFAULT NULL, `resource_id` varchar(256) DEFAULT NULL, `branch_type` varchar(8) DEFAULT NULL, `status` tinyint DEFAULT NULL, `client_id` varchar(64) DEFAULT NULL, `application_data` varchar(2000) DEFAULT NULL, `create_time` bigint DEFAULT NULL, `update_time` bigint DEFAULT NULL, PRIMARY KEY (`branch_id`), KEY `idx_xid` (`xid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 锁表 CREATE TABLE IF NOT EXISTS `lock_table` ( `row_key` varchar(128) NOT NULL, `xid` varchar(96) DEFAULT NULL, `transaction_id` bigint DEFAULT NULL, `branch_id` bigint NOT NULL, `resource_id` varchar(256) DEFAULT NULL, `table_name` varchar(32) DEFAULT NULL, `pk` varchar(36) DEFAULT NULL, `gmt_create` datetime DEFAULT NULL, `gmt_modified` datetime DEFAULT NULL, PRIMARY KEY (`row_key`), KEY `idx_xid` (`xid`), KEY `idx_branch_id` (`branch_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

4. docker-compose.yml(整合 mysql + nacos + seata)

version: '3.8' services: # Mysql 存储seata事务表 mysql: image: mysql:8.0 container_name: seata-mysql restart: always environment: MYSQL_ROOT_PASSWORD: root123456 volumes: - ./sql/seata_init.sql:/docker-entrypoint-initdb.d/seata_init.sql - mysql-data:/var/lib/mysql ports: - "3306:3306" networks: seata-net: aliases: - mysql # Nacos 注册配置中心 nacos: image: nacos/nacos-server:2.2.3 container_name: seata-nacos restart: always environment: MODE: standalone ports: - "8848:8848" - "9848:9848" volumes: - nacos-data:/home/nacos/data networks: seata-net: aliases: - nacos # Seata TC 协调服务(基于本地Dockerfile构建) seata-server: build: context: ./ dockerfile: Dockerfile container_name: seata-server restart: always ports: - "8091:8091" depends_on: - mysql - nacos networks: seata-net: aliases: - seata-server volumes: mysql-data: nacos-data: networks: seata-net: driver: bridge

5. 启动与验证步骤

5.1 目录结构确认

seata-docker/ ├── Dockerfile ├── application.yml ├── docker-compose.yml └── sql/ └── seata_init.sql

5.2 一键启动

# 后台启动 docker-compose up -d # 查看日志(观察seata是否成功注册nacos、连接mysql) docker-compose logs -f seata-server

5.3 验证成功标志

  1. 打开 Nacos 控制台http://localhost:8848/nacos,服务列表出现seata-server
  2. MySQL 数据库自动创建seata_server库,包含 global_table /branch_table/lock_table;
  3. seata 日志无报错,正常监听 8091 端口。

6. 微服务客户端配置(SpringCloud Alibaba)

业务项目application.yml连接容器内 Seata

spring: cloud: alibaba: seata: tx-service-group: my_tx_group seata: registry: type: nacos nacos: server-addr: 127.0.0.1:8848 config: type: nacos nacos: server-addr: 127.0.0.1:8848

7. 常用操作命令

# 停止服务 docker-compose down # 停止并清空数据卷(重置所有数据) docker-compose down -v # 重新构建seata镜像并启动 docker-compose up -d --build

补充说明

  1. 版本可替换:seataio/seata-server:1.7.1nacos 2.3.2
  2. 密码、端口、nacos namespace、mysql 库名可自行修改;
  3. 业务库必须手动执行undo_log建表语句(仅 TC 库由 docker 自动初始化);
  4. 容器内部服务互通使用服务名nacos/mysql,宿主机客户端使用127.0.0.1
http://www.jsqmd.com/news/1295446/

相关文章:

  • 从参数到效果:EchoMimicV3的1.3B模型架构如何平衡性能与效率?
  • 一文读懂polling的跨平台实现:Linux epoll与Windows IOCP的差异与适配
  • 2026年7月佛山GEO公司指南:广东金袋鼠传媒,口碑之选的靠谱机构 - GrowUME
  • 3分钟快速上手:大麦自动抢票Python脚本终极指南
  • GHelper完整指南:轻量化华硕笔记本控制工具,完美替代Armoury Crate
  • 温县河南王战军太极文武学校2026招生咨询热线 - Luckyone王
  • 从论文到实践:ReconX如何将3D重建转化为时序生成任务?
  • 天道读后感
  • 2026年虹坤文武学校招生信息汇总:学费多少及报名条件详解 - 圣龙武术朱老师
  • ES-Client终极指南:如何轻松管理Elasticsearch集群
  • 如何用Python自动化抢票工具3分钟搞定大麦演唱会门票
  • 镜像视界七大行业场景·原生空间智能技术体系|原生像素升维·定义空间智能新时代
  • 巴中优壹加装饰坚守品质:自有施工队伍 全程工程零外包
  • 新手必看:analyze-css输出结果全解读(含metrics与offenders分析)
  • 广州白云区中国黄金金条首饰回收,各类足金饰品估价,到店交易安心靠谱 - 逸程奢侈品回收中心
  • 基于SpringBoot的高校生活垃圾分类系统的设计与实现(源码+lw+部署文档+讲解等)
  • 2026年重庆电缆桥架品牌挑选攻略:渝腾电力等值得关注的企业梳理 - 比奇堡111
  • 2026硬密封蝶阀厂家甄选指南:上海美力德阀门制造有限公司深度解析 - 品牌深度评测
  • HExHTTP vs 传统安全工具:为什么它是HTTP头部漏洞检测的最佳选择?
  • Go-Limiter源码解析:从Take方法看令牌桶算法的高效实现
  • 2026安徽省升学规划:安徽工贸公办复读班,文化课+技能双轨提分攻略 - 最新资讯
  • 智元Sim2Real面试,杯子换了材质就抓不起来怎么排查
  • 制造业短视频获客怎么做?从账号定位、AI内容生产到团队陪跑的落地方法 - 制造业避坑李哥
  • Windows系统优化终极指南:用Win11Debloat让你的电脑飞起来
  • 【AI模型瘦身黄金法则】:20年算法工程师亲授剪枝技术选型、量化与部署避坑指南
  • 如何利用django-forms-builder实现数据报告导出:CSV/XLS分析表单提交数据的完整指南
  • 【反向提示词黄金法则】:20年AI工程师亲授7大避坑指南与实战调优秘籍
  • 就业规划不止是拿offer
  • 石家庄会议活动跟拍摄影摄像行业公信力测评:活动跟拍会议拍摄药企年会摄影医药论坛摄像照片直播视频直播展会拍摄多机位摄像活动快剪GMP车间活动拍摄医疗会议跟拍高清照片精修医药行业 - 狩猎者007
  • 苏州独石传媒:从2026智博会到低空经济大会,拆解大型产业活动执行全流程SOP与节点控制