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一样
经过案例测试,搭建单实例成功