docker部署seata-sever流程

 

 

用docker部署seata的时候遇见了一个大坑,不过,有了上次的经验,处理比较方便

下面的流程误会尽量详细

问题:seata是怎么部署的

一开始我看文章,以为seata是和sentinel一样的方式,其实不然,它的服务端是独立的需要单独配置

这里都是使用的最新版seata

第一步:下载seata的源码 https://github.com/seata/seata.git 

进入目录seata\script\config-center

找到文件 config.txt

 

# 修改存储模式为数据库存储
store.mode=db
# 指定数据库为mysql,其他数据库类型根据自身情况修改
store.db.dbType=mysql
# 指定引擎,mysql8以下为com.mysql.jdbc.Driver,mysql8为com.mysql.cj.jdbc.Driver
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://{ip}:3306/{db_name}?useUnicode=true
store.db.user={db_user}
store.db.password={db_password}

 

 

 

 

 持久化方式为mysql,修改这里的配置,注意!!!!

如果是用的docker部署mysql,在没有创建容器网络的情况下

 容器之间的访问不是127.0.0.1

在容器中使用 ping docker.host internal

找到宿主机的局域网ip

配置完这一步之后

转到seata\script\config-center\nacos

 

 

sh nacos-config.sh -h {nacos服务的host} -u {nacos用户名} -w {nacos密码}

运行sh文件,这一步是把这个txt文件中的内容上传至nacos的配置中心

  在宿主机运行的时候这个nacos地址可以用127.0.0.1:8848

查看nacos的配置列表

 

第二步

目录 seata\script\server\config

 

 

 

 

 

 

 

 

 

我是将nacos作为注册和配置中心

所以只需要修改registry.conf这个文件

 

 

 

 

数据库初始化

eata\test\src\test\resources\saga\sql

这个文件下面有mysql的初始sql

新建一个数据库名字就叫seata

 

 将修改后的registry.conf文件复制到容器的seata-server/resources目录下

然后在docker中运行seata,注意需要开放8091端口

也可以使用docker-compose的方式

version: "1.0"
services:
    # 分布式事务服务
    seata-server:
        image: seataio/seata-server
        ports:
            - "8091:8091"
        environment:
            #宿主机ip
            - SEATA_IP={宿主机host}
            - SEATA_PORT=8091
            - STORE_MODE=db
        volumes:
            # 复制文件到容器
            - "./seata_server/resources/registry.conf:/seata-server/resources/registry.conf"
            # 日志文件夹
            - "./seata_server/logs:/root/logs/seata"

启动完成后去nacos查看

 

 出现seata-server表示服务端注册成功

可能会有遗漏,有问题可以在评论告知

 

posted @ 2021-03-03 23:34  BrightFl  阅读(1670)  评论(0编辑  收藏  举报