在windows上使用docker安装配置seata服务教程

本文详细指导如何在Windows环境下通过Docker部署Seata Server,配置与Spring Boot微服务的连接,实现事务管理,并记录常见问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 目录

一、前言

二、部署seata-server

1拉取seata-server镜像

2配置registry.conf

3配置seata-server服务端和客户端的表

4nacos配置

5启动seata-server容器

三、启动微服务

 1springboot配置

 2启动springboot

 3查看nacos

四、测试事务

五、踩坑记录

0101 can not connect to 127.0.0.1:8091 cause:can not register RM

can not get cluster name in registry config

Host 'host.docker.internal' is not allowed to connect to this MySQL server

com.alibaba.nacos.api.exception.NacosException: dataId invalid


一、前言

目标:使用docker容器化的seata-server服务连接windows本机的nacos,使windows本机的微服务注册到seata-server服务,并设置nacos为配置中心。

二、部署seata-server

1拉取seata-server镜像

docker pull seataio/seata-server:1.4.2

2配置registry.conf

registry.conf中config的type如果改为nacos则不需要再项目中引入file.conf了

registry {
  type = "nacos"

  nacos {
    application = "seata-server"
    serverAddr = "192.168.1.11:8848"
    group = "DEFAULT_GROUP"
    namespace = ""
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
}

config {
  type = "nacos"

  file {
    name = "file.conf"
  }

  nacos {
    serverAddr = "192.168.1.11:8848"
    namespace = ""
    group = "DEFAULT_GROUP"
    username = "nacos"
    password = "nacos"
    dataId = "seataServer.properties"
  }

}

3配置seata-server服务端和客户端的表

store.session.mode=db时需要给服务端配置数据库地址以及数据表

branch_table

global_table

lock_table

服务端sql脚本

 undo_log

客户端sql脚本

4nacos配置

service.vgroupMapping.aqua_tx_group=default
service.default.grouplist=localhost:8091
service.enableDegrade=false
service.disableGlobalTransaction=false
store.mode=db
store.lock.mode=db
store.session.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://192.168.1.11:3306/mydb?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=root
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.distributedLockTable=distributed_lock
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000

5启动seata-server容器

docker run --name seata-server \
-p 8091:8091 \
-e SEATA_CONFIG_NAME=file:/root/seata-config/registry \
-v D:/jar/seata-server-1.4.2/conf:/root/seata-config \
seataio/seata-server:1.4.2

挂载本地配置文件到docker容器 D:\jar\seata-server-1.4.2\conf

参考官网文档:https://seata.io/zh-cn/docs/ops/deploy-by-docker.html

根据容器名称删除容器(注意:不能在cmd中执行,请使用gitbash)

docker rm $(docker ps -a -q --filter name=seata-server) -f

启动成功:

三、启动微服务

 1springboot配置

只展示关键配置

源码位置:demo-provider

maven依赖

<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>1.4.2</version>
</dependency>

<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>1.4.2</version>
</dependency>

application.properties

seata.config.type=nacos设置了配置在nacos的DataId是seataServer.properties的配置中
#seata服务配置
#seata.service.grouplist.default=localhost:8091
#seata.service.vgroupMapping.aqua_tx_group=default
#注册中心
seata.registry.nacos.application=seata-server
seata.registry.nacos.cluster=default
seata.registry.nacos.group=DEFAULT_GROUP
#seata.registry.nacos.server-addr=192.168.1.11:8848
#配置中心
seata.config.type=nacos
seata.config.nacos.server-addr=127.0.0.1:8848
seata.config.nacos.group=DEFAULT_GROUP
seata.config.nacos.dataId=seataServer.properties
seata.config.nacos.username=nacos
seata.config.nacos.password=nacos

2启动springboot

 3查看nacos

四、测试事务

事务提交

 事务回滚

接口报错模拟业务异常,使事务回滚。(测试seata是否生效使用单机事务即可) 

五、踩坑记录

注意使用本机ip

0101 can not connect to 127.0.0.1:8091 cause:can not register RM

原因:docker启动命令使用了--net=host会导致微服务报错,因为主机网络模式只在linux生效

can not get cluster name in registry config

application.properties增加配置

seata.service.vgroupMapping.aqua_tx_group=default
seata.tx-service-group=aqua_tx_group

Host 'host.docker.internal' is not allowed to connect to this MySQL server

开启mysql远程连接

参考:mysql远程连接

 com.alibaba.nacos.api.exception.NacosException: dataId invalid

application.properties配置属性文件不能加双引号

错误示例

seata.config.nacos.dataId="seataServer.properties"

正确示例

seata.config.nacos.dataId=seataServer.properties

### 使用 DockerWindows安装配置 Nacos #### 下载并启动 Nacos 镜像 为了在 Windows 上通过 Docker 安装 Nacos,可以利用 `docker pull` 命令来获取官方发布的 Nacos Server 镜像。对于最新的稳定版,执行以下命令即可完成下载操作[^2]。 ```bash docker pull nacos/nacos-server ``` 如果希望指定特定版本,则可以在镜像名称后面加上冒号以及具体的标签,例如: ```bash docker pull nacos/nacos-server:1.2.0 ``` #### 运行容器实例 接着创建并启动一个基于所拉取到本地的 Nacos 映像的新容器。这里不仅指定了端口映射关系还设置了环境变量以单机模式运行,并且进行了日志与数据目录挂载以便于后续管理和维护工作[^3]。 ```bash docker run -d --name nacos \ -p 8848:8848 -p 9848:9848 -p 9849:9849 \ -e MODE=standalone \ -v E:/code/docker/nacos/logs:/home/nacos/logs \ -v E:/code/docker/nacos/data:/home/nacos/data \ nacos/nacos-server ``` 请注意路径 `/E:/code/docker/nacos/...` 应该替换为你自己的磁盘位置。 #### 修改配置文件 当需要调整默认设置时,可以通过进入正在运行中的容器内部来进行编辑操作。具体做法是先打开交互式的 Bash Shell 环境再调用 Vi 编辑器对目标属性文档做出相应更改[^1]。 ```bash docker exec -it nacos /bin/bash vi /home/nacos/conf/application.properties ``` #### 初始化 Seata 组合配置 (可选) 如果有涉及到分布式事务管理的需求场景下还可以进一步集成 Seata 并初始化必要的注册中心信息[^5]。 ```bash sh nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t <命名空间ID> ``` 以上就是在 Windows 中借助 Docker 实现快速搭建起一套完整的 Nacos 微服务平台解决方案的方法概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值