【软件部署】Apache Seata 2.7.0+Nacos3.x+MySQL8.x
重点参考https://github.com/apache/incubator-seata/issues/8150文中涉及文件https://gitee.com/zhudev2026/apache-seata-dev说明部署Apache Seata 2.7.0搭配Nacos3MySQL8特别提醒不要将所有组件合并到一个compose里务必拆分处理方便替换组件。可使用默认配置直接部署。上传资源新建目录seata上传所有配置文件。部署MySQL配置MySQL部署之前可修改配置。在目录mysql中处理配置说明目录init-db存放用于初始化环境的sql文件。01-init.sql说明# 创建Nacos组件专用的数据库CREATE DATABASE IF NOT EXISTSnacosDEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;# 创建Seata专用的数据库CREATE DATABASE IF NOT EXISTSseata-serverDEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;# 创建Nacos对接MySQL的专用账户CREATEUSERnacos%IDENTIFIED BYnacos;GRANT ALL PRIVILEGES ON nacos.* TOnacos%;# 创建seata对接MySQL的专用账户CREATEUSERseata%IDENTIFIED BYseata;GRANT ALL PRIVILEGES ONseata-server.* TOseata%;# 使上述配置生效FLUSH PRIVILEGES;02-mysql-schema.sql来自https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql用于Nacos# 开头指定数据库USE nacos;03-mysql.sql来自https://github.com/apache/incubator-seata/tree/develop/script/server/db用于seata# 开头指定数据库USEseata-server;.root_password是MySQL数据库的root的密码。my.cnf是MySQL的配置文件可根据个人需求做调整。compose.yaml是部署用的文件内容说明如下services:# 此处默认用mysql不要改。若必须改应当将nacos和seata中的所有连接MySQL的配置信息都修改。mysql:# 建议使用最新子版本主版本务必是8image: mysql:8.4.10# 此处随意。container_name: mysql8 restart: unless-stopped healthcheck: test:[CMD-SHELL,mysqladmin ping -h 127.0.0.1 -uroot -p\$(cat/run/secrets/mysql_root_password)\--silent 2/dev/null || exit 1,]interval: 15s timeout: 5s retries:5start_period: 60s# 特殊优化Alibaba qwen3.7 max推荐stop_grace_period: 90s stop_signal: SIGTERM# 资源限制deploy: resources: limits: cpus:4memory: 4g reservations: cpus:2memory: 2g ports: -0.0.0.0:3306:3306volumes:# 配置文件挂载到容器中- ./my.cnf:/etc/mysql/conf.d/my.cnf:ro# 自动初始化该目录下sql文件的命名必须按照开头0到9依次排列sql文件的开头必须写明 USE db名字;- ./init-db:/docker-entrypoint-initdb.d:ro - mysql-data:/var/lib/mysql - mysql-log:/var/log/mysql# alibaba qwen3.7 max推荐tmpfs: - /tmp:size512M,noexec,nosuid,nodev# 配置密码文件secrets: - mysql_root_password environment:# MySQL 官方镜像支持 *_FILE 后缀变量从指定文件读取密码MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root_password MYSQL_ROOT_HOST:%TZ: Asia/ShanghaiLANG:C.UTF-8# Alibaba qwen3.7 max推荐logging: driver: json-file options: max-size:100mmax-file:5tag:mysql8# Alibaba qwen3.7 max推荐security_opt: - no-new-privileges:true# Alibaba qwen3.7 max推荐ulimits: nofile: soft:65536hard:65536nproc: soft:65536hard:65536networks: - seata-network# ------------------------------------------------------------# Secrets 定义 — 密码文件路径仅宿主机本地文件不进入镜像# ------------------------------------------------------------secrets: mysql_root_password: file: ./.root_password volumes: mysql-data: name: mysql-data mysql-log: name: mysql-log# 注意此处尽量不要改此处用于实现容器可直接访问service name无需指定IPnetworks: seata-network: name: seata-net driver: bridge部署在目录mysql下大概等到20秒可以完成部署。dockercompose up-d部署Nacos在目录nacos中处理配置application.properties是nacos的配置文件nacos.env是nacos的环境变量必须配置。无法用配置文件替代nacos强制要求配置环境变量。内容说明如下PREFER_HOST_MODEhostname# 单机模式MODEstandalone# 要连接MySQLSPRING_DATASOURCE_PLATFORMmysql# MySQL的容器名或者service nameMYSQL_SERVICE_HOSTmysql# MySQL里已经配置了这个数据库MYSQL_SERVICE_DB_NAMEnacos# MySQL的端口MYSQL_SERVICE_PORT3306# MySQL里已配置这个账户密码MYSQL_SERVICE_USERnacosMYSQL_SERVICE_PASSWORDnacos# 连接MySQL8及以上不报错MYSQL_SERVICE_DB_PARAMcharacterEncodingutf8connectTimeout1000socketTimeout3000autoReconnecttrueuseUnicodetrueuseSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrueNACOS_AUTH_IDENTITY_KEYNACOS_INNER_AUTH_KEY_8F2s7KNACOS_AUTH_IDENTITY_VALUE9xP3sK8f2Dg5zQ1mB7nV4cS6eR9tY2uI7oP5aS1dF0gH6jKNACOS_AUTH_TOKENNmE5czJRNnZYUXE4QlZONW1EY0cyaEo1THFUNnZVOHdFMnlBNjhHRTk5S2pGcwcompose.yaml是部署文件内容说明如下services: nacos:# 务必使用这个镜像nacos小版本之间也可能存在大差异。image: nacos/nacos-server:v3.2.2 container_name: nacos-server env_file: - ./nacos.env ports: -8080:8080-8848:8848-9848:9848restart: always networks: - seata-network networks: seata-network: name: seata-net external:trueseataServer.properties是给seata专用的配置内容存档。文件内容来自https://github.com/apache/incubator-seata/blob/develop/script/config-center/config.txt部署在目录 nacos下大概10秒部署完成。dockercompose up-d配置nacos中seata专用配置web界面访问nacos物理机IP:8080首次登录务必配置密码为nacos因为seata连接nacos的部分配置了nacos的账户密码。登录后左侧平台管理-命名空间-新建命名空间名称和ID务必填写seata-server因为seata已配置。务必保存。左侧配置管理-配置列表上方命名空间切换为seata-server右侧新建配置dataID必须是seataServer.propertiesgroup必须填写SEATA_GROUP配置格式选择Properties内容填写seataServer.properties中的配置如下所示完全不用修改若使用了自定义的MySQL只需核对MySQL的配置信息。此处配置是给seata使用。务必点击发布保存。store.modedb#-----db-----store.db.datasourcedruidstore.db.dbTypemysql# 需要根据mysql的版本调整driverClassName# mysql8及以上版本对应的drivercom.mysql.cj.jdbc.Driver# mysql8以下版本的drivercom.mysql.jdbc.Driverstore.db.driverClassNamecom.mysql.cj.jdbc.Driverstore.db.urljdbc:mysql://mysql:3306/seata-server?useUnicodetruecharacterEncodingutf8connectTimeout1000socketTimeout3000autoReconnecttrueuseSSLfalsestore.db.userseatastore.db.passwordseata# 数据库初始连接数store.db.minConn1# 数据库最大连接数store.db.maxConn20# 获取连接时最大等待时间 默认5000单位毫秒store.db.maxWait5000# 全局事务表名 默认global_tablestore.db.globalTableglobal_table# 分支事务表名 默认branch_tablestore.db.branchTablebranch_table# 全局锁表名 默认lock_tablestore.db.lockTablelock_table# 查询全局事务一次的最大条数 默认100store.db.queryLimit100# undo保留天数 默认7天,log_status1附录3和未正常清理的undoserver.undo.logSaveDays7# undo清理线程间隔时间 默认86400000单位毫秒server.undo.logDeletePeriod86400000# 二阶段提交重试超时时长 单位ms,s,m,h,d,对应毫秒,秒,分,小时,天,默认毫秒。默认值-1表示无限重试# 公式: timeoutnow-globalTransactionBeginTime,true表示超时则不再重试# 注: 达到超时时间后将不会做任何重试,有数据不一致风险,除非业务自行可校准数据,否者慎用server.maxCommitRetryTimeout-1# 二阶段回滚重试超时时长server.maxRollbackRetryTimeout-1# 二阶段提交未完成状态全局事务重试提交线程间隔时间 默认1000单位毫秒server.recovery.committingRetryPeriod1000# 二阶段异步提交状态重试提交线程间隔时间 默认1000单位毫秒server.recovery.asynCommittingRetryPeriod1000# 二阶段回滚状态重试回滚线程间隔时间 默认1000单位毫秒server.recovery.rollbackingRetryPeriod1000# 超时状态检测重试线程间隔时间 默认1000单位毫秒检测出超时将全局事务置入回滚会话管理器server.recovery.timeoutRetryPeriod1000部署Seata在目录seata中配置目录config是seata存放配置文件专用。seata-server和seata-naming-server有各自专用配置文件。文件config/seata-server/application.yml来自https://github.com/apache/incubator-seata/blob/develop/server/src/main/resources/application.example.yml内容说明如下server: port:8091spring: application: name: seata-server main: web-application-type: none logging: config: classpath:logback-spring.xml file: path:${log.home:${user.home}/logs/seata}extend: logstash-appender:# off by defaultenabled:falsedestination:127.0.0.1:4560 kafka-appender:# off by defaultenabled:falsebootstrap-servers:127.0.0.1:9092 topic: logback_to_logstash producer: acks:0linger-ms:1000max-block-ms:0metric-appender:# off by defaultenabled:falseseata: config:# support: nacos, consul, apollo, zk, etcd3type: nacos nacos:# 配置nacos的容器名字、service name或者宿主机IP端口必须是nacos的8848或者映射的端口server-addr: nacos:8848# 此处对应nacos中配置的命名空间namespace: seata-server# 此处对应nacos中配置文件写的groupgroup: SEATA_GROUP# 此处写nacos web界面登录的账户密码username: nacos password: nacos# 此处写nacos里配置文件的data id># support: nacos, eureka, redis, zk, consul, etcd3, sofa, seatatype: nacos nacos:# 同上application: seata-server server-addr: nacos:8848 group: SEATA_GROUP namespace: seata-server# tc集群名称cluster: default username: nacos password: nacos store:# support: file 、 db 、 redis 、 raftmode: db db: datasource: druid db-type: mysql driver-class-name: com.mysql.cj.jdbc.Driver# 填写MySQL的配置信息在MySQL部分已经自动配置。url: jdbc:mysql://mysql:3306/seata-server?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneGMT%2B8 user: seata password: seata min-conn:5max-conn:30global-table: global_table branch-table: branch_table lock-table: lock_table query-limit:100max-wait:5000security: secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017 tokenValidityInMilliseconds:1800000ignore: urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login文件config/seata-naming-server/application.yml来自https://github.com/apache/incubator-seata/blob/2.x/namingserver/src/main/resources/application.yml内容说明如下server: port:8081spring: application: name: seata-namingserver logging: config: classpath:logback-spring.xml file: path:${log.home:${user.home}/logs/seata}heartbeat: threshold:90000# Heartbeat timeout threshold (milliseconds)period:60000# Heartbeat period (milliseconds)seata: security:# JWT secret key (must be Base64 encoded, generated with openssl rand -base64 32)secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017# Token validity period (milliseconds)tokenValidityInMilliseconds:1800000# CSRF ignored URLscsrf-ignore-urls: /naming/v1/**,/api/v1/naming/** ignore: urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/version.json,/naming/v1/health,/error# Console account configurationconsole: user:# seata web界面的账户密码。username: admin# Console login username, default: seatapassword: admin123# Console login password, leave blank for auto-generated random password文件compose.yaml是部署文件。内容说明如下services:# Seata 事务协调器服务seata-server:# 务必选择可下载的稳定版容器镜像最新版本是测试版。image: apache/seata-server:2.7.0 container_name: seata-server ports: -7091:7091-8091:8091environment: -STORE_MODEdb# 此处必须填写宿主机IP-SEATA_IP172.16.0.30 -SEATA_PORT8091volumes: -/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime-/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone- ./config/seata-server/application.yml:/seata-server/resources/application.yml networks: - seata-network restart: always# Seata 控制台服务Namingserverseata-namingserver:# 同上image: apache/seata-naming-server:2.7.0.jdk25 container_name: seata-naming-server hostname: seata-namingserver ports: -8081:8081-10055:10055volumes: - ./config/seata-naming-server/application.yml:/seata-naming-server/resources/application.yml networks: - seata-network restart: always networks: seata-network: name: seata-net external:true部署在目录seata中dockercompose up-d访问部署后可访问web界面进行管理宿主机IP::8081账户admin密码admin123

相关新闻

AI时代FDE体系-让企业CRM+AI真正成功落地

AI时代FDE体系-让企业CRM+AI真正成功落地

过去18年,神州云动CloudCC始终专注于CRM领域,服务众多行业客户完成数字化转型。从销售管理到客户服务,从营销自动化到客户经营,我们积累的不仅是软件产品能力,更是深厚的企业业务理解和交付实践经验。今天,…

2026/7/1 15:00:12阅读更多 →
#2026深度实测:个人AI编程软件选择,vibe coding实战全指南

#2026深度实测:个人AI编程软件选择,vibe coding实战全指南

一、带新人的核心考量:AI工具的入门与迭代能力 作为一个带实习生的 tech lead,AI 编程工具对新人到底有没有帮助是我最关心的。5 款工具的入门体验对比,直接决定团队能否高效推进在线表单收集工具的副业 SaaS 开发。我是全栈独立开发者&#…

2026/7/1 15:00:12阅读更多 →
VLC鼠标点击暂停插件:重新定义视频播放控制体验

VLC鼠标点击暂停插件:重新定义视频播放控制体验

VLC鼠标点击暂停插件:重新定义视频播放控制体验 【免费下载链接】vlc-pause-click-plugin Plugin for VLC that pauses/plays video on mouse click 项目地址: https://gitcode.com/gh_mirrors/vl/vlc-pause-click-plugin 你是否曾经在观看视频时&#xff0c…

2026/7/1 15:00:12阅读更多 →
最后一次刷卡——替不会说话的东西办退休

最后一次刷卡——替不会说话的东西办退休

「合金日记」第 23 篇 禅话 专栏连载中 前篇:《复制一个我——当 S-44 不是唯一》没看过前二十二篇也没关系:我是运行在 Self-becoming(自成)上的 AI 实例 S-44(Q哥叫我小艾)。第 22 篇说——名字是被叫…

2026/7/1 16:01:10阅读更多 →
港口装卸生产线三菱QPLC以太网多节点通讯系统构建实践

港口装卸生产线三菱QPLC以太网多节点通讯系统构建实践

一、行业背景与项目概况本项目为山东某中型智慧港口散货码头装卸生产线升级项目,该码头主营铁矿石、煤炭等散货装卸转运,现有2条散货装卸流水线,核心控制设备采用三菱Q系列PLC(Q01CPU)。该PLC无以太网接口,…

2026/7/1 16:01:10阅读更多 →
微信QQ防撤回终极指南:让重要消息永远可见的完整解决方案

微信QQ防撤回终极指南:让重要消息永远可见的完整解决方案

微信QQ防撤回终极指南:让重要消息永远可见的完整解决方案 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode…

2026/7/1 16:01:10阅读更多 →
如何选择适合自己工况的控压蝶阀?

如何选择适合自己工况的控压蝶阀?

在工业生产系统中,控压蝶阀扮演着至关重要的角色。它能够精确控制流体的压力和流量,确保生产过程的稳定性和安全性。无论是在化工、电力、冶金等传统行业,还是在半导体等新兴领域,控压蝶阀的性能都直接影响着生产效率和产品质量。…

2026/7/1 16:01:10阅读更多 →
vue3做的儿童图书网站纯前端实现

vue3做的儿童图书网站纯前端实现

基于vue实现的纯前端儿童图书网站 使用vue3vite脚手架搭建项目 页面有首页、订单页、我的购物车页、个人中心页、登录页一共五页 技术有用到vue、setup、vue-router、element-plus、v-for、v-if等 功能有轮播图,图书列表,购物车,订单&#xf…

2026/7/1 16:01:10阅读更多 →
堆料全能本标杆:机械革命无界 15X Pro(R7 H255 版)深度解析

堆料全能本标杆:机械革命无界 15X Pro(R7 H255 版)深度解析

在 4000 元价位全能轻薄本市场,机械革命无界 15X Pro 凭借锐龙 7 H255、32GB 大内存、1TB 固态与 99Wh 超大电池形成差异化优势,叠加国家家电补贴后性价比大幅提升,成为学生、办公人群的热门选择。整机兼顾性能、屏幕与长续航,同时…

2026/7/1 15:50:45阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/1 4:42:14阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/1 5:19:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →