前言
一直都有關注分佈式事務的解決方案,seata從去年的剛發佈,整個生態已經發展的比較穩定,自己也抽空研究了一下如何把seata用Docker部署並註冊到nacos,使用nacos配置中心。可參考seata官網
開始
一、拉取鏡像
執行以下兩條命令拉取官方Docker鏡像
//搜索鏡像
docker search seata
//拉取鏡像
docker pull seataio/seata-server
二、掛載配置文件
爲了方便自定義配置文件,需要把seata的配置文件掛在到宿主機
先把鏡像跑起來,把容器裏面的配置文件,複製一份到本機
docker run --name seata-server -p 8091:8091 seataio/seata-server:latest
docker cp seata-server:/seata-server /root/seata-config/
停止容器
docker stop seata-server
刪除容器
docker rm seata-server
重新啓動
docker run -d --name seata-server -p 8091:8091 -e SEATA_IP=122.51.97.239 -e SEATA_PORT=8091 -v /root/seata-config/seata-server/:/seata-server/ seataio/seata-server
三、註冊seata到nacos上,並且使用nacos作爲配置中心
-
首先,修改目錄/root/seata-config/seata-server/resources下的registry.conf文件
registry { # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa type = "nacos" nacos { application = "seata-server" serverAddr = "" namespace = "" cluster = "default" username = "" password = "" } file { name = "file.conf" } } config { # file、nacos 、apollo、zk、consul、etcd3 type = "nacos" nacos { serverAddr = "" namespace = "" group = "SEATA_GROUP" username = "" password = "" } file { name = "file.conf" } }
把其中的registry中type改爲nacos,並修改nacos的服務地址等相關信息
-
其次,把seata配置文件推送到nacos
把以下文件nacos-cofig.sh和config.txt複製到服務器
https://github.com/seata/seata/blob/develop/script/config-center/nacos/nacos-config.sh
-
config.txt是seata相關可配置信息
我們可以選擇其中幾個推送到nacos
如我選擇了以下幾個,數據庫相關信息
store.db.datasource=druid store.db.dbType=mysql store.db.driverClassName=com.mysql.jdbc.Driver store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true store.db.user=username store.db.password=password store.db.minConn=5 store.db.maxConn=30 store.db.globalTable=global_table store.db.branchTable=branch_table store.db.queryLimit=100 store.db.lockTable=lock_table store.db.maxWait=5000
-
nacos-cofig.sh是把推送配置到nacos的腳本文件
注意修改nacos-cofig.sh文件裏的config.txt文件地址
for line in $(cat $(dirname "$PWD")/config.txt | sed s/[[:space:]]//g);
把PWD")更換成相應目錄,然後執行
sh nacos-config.sh -h 122.51.97.239 -p 8848 -g SEATA_GROUP
執行完後,可以在nacos後臺看到相應的seata配置文件,如下圖
到這seata服務端的部署就完成了
結語
本文簡單描述了seata服務端如何搭建並使用docker部署到linux服務器,關於Seata客戶端如何集成到Springboot,SpringCloud項目中會在後續文章中