1. 官方指南
地址:SEATA官方部署指南
可以根據自己情況配置安裝,下面是根據官方指南簡單示例安裝教程
本地環境:
Vmware CentOS 7 : 192.168.7.100
2. 拉取鏡像
選擇合適的版本下載(自行判斷需求版本),docker命令:
docker pull seataio/seata-server:1.2.0
查看拉取的鏡像:
[root@xxx seata-config]# docker images | grep seata*
docker.io/seataio/seata-server 1.2.0 0e583569b94c 6 months ago 150 MB
可以看見拉取下來的150MB的seata鏡像(docker.io/seataio/seata-server:1.2.0
)
3.創建容器並啟動
下面2種方式二選一,根據實際情況配置即可,建議使用掛載自定義配置配置文件啟動,不然在容器內修改配置文件不太爽
3.1 不使用自定義配置文件創建、啟動
快速開始:
docker run --name seata-server \
-p 8091:8091 \
-e SEATA_IP=192.168.7.100 \
-e SEATA_PORT=8091 \
docker.io/seataio/seata-server:1.2.0
3.2 使用自定義配置文件創建、啟動(推薦)
宿主機中創建配置文件映射目錄/usr/local/mydocker/seata/seata-config
(可自定義):
mkdir /usr/local/mydocker/seata/seata-config
該目錄下存放registry.conf
和 file.conf
2個文件,將被掛載到seata容器中相應的目錄
registry.conf
和 file.conf
2個文件的文件模板可以通過創建臨時的seata鏡像對象,進入容器內部后,利用docker cp
命令復制容器內/seata-server/resources/
目錄下的文件到宿主機;或者通過網絡上搜索模板即可(GITHUB參考模板)
在剛剛新建的目錄/usr/local/mydocker/seata/seata-config
新增registry.conf
和 file.conf
2個文件
- registry.conf文件
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
# 以上注冊中心自己根據實際情況選擇,這里以eureka為例(示例eureka地址:192.168.43.17:8761)
type = "eureka"
eureka {
serviceUrl = "http://192.168.43.17:8761/eureka"
application = "seata-server"
weight = "1"
}
}
# registry.conf.type=file時有效
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "file"
file {
name = "file:/root/seata-config/file.conf"
}
}
- file.conf文件
## transaction log store, only used in seata-server
store {
## store mode: file、db
mode = "file"
## file store property
file {
## store location dir
dir = "sessionStore"
# branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
maxBranchSessionSize = 16384
# globe session size , if exceeded throws exceptions
maxGlobalSessionSize = 512
# file buffer size , if exceeded allocate new buffer
fileWriteBufferCacheSize = 16384
# when recover batch read size
sessionReloadReadSize = 100
# async, sync
flushDiskMode = async
}
}
創建並啟動容器:
docker run -d --name seata-server \
-p 8091:8091 \
-e SEATA_IP=192.168.7.100 \
-e SEATA_PORT=8091 \
-e STORE_MODE=file \
--network=host \
-e SEATA_CONFIG_NAME=file:/root/seata-config/registry \
-v /usr/local/mydocker/seata/seata-config:/root/seata-config \
--privileged=true \
docker.io/seataio/seata-server:1.2.0
注意事項:
以file模式為例:
-
registry.conf
文件的config.file.name
的路徑是容器內的/root/seata-config/
目錄,且以file:
開頭,即如下格式:config { file { name = "file:/root/seata-config/file.conf" } }
-
--privileged=true 增加獲取宿主機root權限(特殊權限)
-
--network=host 網絡共享
環境變量參考
變量名稱 描述 SEATA_IP 可選, 指定seata-server啟動的IP, 該IP用於向注冊中心注冊時使用, 如eureka等 SEATA_PORT 可選, 指定seata-server啟動的端口, 默認為 8091
STORE_MODE 可選, 指定seata-server的事務日志存儲方式, 支持 db
,file
,redis(Seata-Server 1.3及以上版本支持), 默認是file
SERVER_NODE 可選, 用於指定seata-server節點ID, 如 1
,2
,3
..., 默認為根據ip生成
SEATA_ENV 可選, 指定 seata-server 運行環境, 如 dev
,test
等, 服務啟動時會使用registry-dev.conf
這樣的配置SEATA_CONFIG_NAME 可選, 指定配置文件位置, 如 file:/root/registry
, 將會加載/root/registry.conf
作為配置文件,如果需要同時指定file.conf
文件,需要將registry.conf
的config.file.name
的值改為類似file:/root/file.conf
:
4. 查看容器狀態
docker命令:
docker ps | grep sea*
如下圖:
Eureka注冊中心查看,如下圖:
可以看見名叫“seata-server”的實例,和registry.conf文件中配置的實例ID一樣
經過案例測試,搭建單實例成功