docker 安装seata1.2.0(单机),注册到nacos,使用mysql数据库
1拉取镜像,查看镜像
#拉取镜像
docker pull seataio/seata-server:1.2.0
#查看镜像
docker images
2 使用自定义配置文件创建
#宿主机创建配置文件存放目录
vim /usr/local/dockers/seata/config/registry.conf
3写入nacos注册配置
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
# 指定注册中心为nacos
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "192.168.40.199:8848"
group = "SEATA_GROUP"
namespace = ""
cluster = "default"
username = "nacos"
password = "nacos"
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "192.168.40.199:8848"
namespace = ""
group = "SEATA_GROUP"
username = "nacos"
password = "nacos"
}
}
保存退出
4在github上下载seata源码
在seata/script/config-center目录下修改config.txt
store.mode=db
store.file.dir=file_store/data
store.file.maxBranchSessionSize=16384
store.file.maxGlobalSessionSize=512
store.file.fileWriteBufferCacheSize=16384
store.file.flushDiskMode=async
store.file.sessionReloadReadSize=100
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
然后修改
seata/script/config-cente/nacos目录下nacos-config.sh.将nacos地址换成自己的
if [[ -z ${host} ]]; then
host=192.168.40.199
fi
if [[ -z ${port} ]]; then
port=8848
fi
if [[ -z ${group} ]]; then
group="SEATA_GROUP"
fi
if [[ -z ${tenant} ]]; then
tenant=""
fi
在命令行终端运行 sh nacos-config.sh。将配置推送到nacos。就可以在nacos的配置列表看到自己的数据库配置
5自己的数据库运行seata/script/server/db 下的数据库初始化sql
以下使用mysql5.7
-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
`xid` VARCHAR(128) NOT NULL,
`transaction_id` BIGINT,
`status` TINYINT NOT NULL,
`application_id` VARCHAR(32),
`transaction_service_group` VARCHAR(32),
`transaction_name` VARCHAR(128),
`timeout` INT,
`begin_time` BIGINT,
`application_data` VARCHAR(2000),
`gmt_create` DATETIME,
`gmt_modified` DATETIME,
PRIMARY KEY (`xid`),
KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
`branch_id` BIGINT NOT NULL,
`xid` VARCHAR(128) NOT NULL,
`transaction_id` BIGINT,
`resource_group_id` VARCHAR(32),
`resource_id` VARCHAR(256),
`branch_type` VARCHAR(8),
`status` TINYINT,
`client_id` VARCHAR(64),
`application_data` VARCHAR(2000),
`gmt_create` DATETIME(6),
`gmt_modified` DATETIME(6),
PRIMARY KEY (`branch_id`),
KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
`row_key` VARCHAR(128) NOT NULL,
`xid` VARCHAR(96),
`transaction_id` BIGINT,
`branch_id` BIGINT NOT NULL,
`resource_id` VARCHAR(256),
`table_name` VARCHAR(32),
`pk` VARCHAR(36),
`gmt_create` DATETIME,
`gmt_modified` DATETIME,
PRIMARY KEY (`row_key`),
KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
6 运行容器
docker run -it -d -p 8091:8091 \
-v /usr/local/dockers/seata/config/registry.conf:/seata-server/resources/registry.conf \
-v /usr/local/dockers/seata/config/file.conf:/seata-server/resources/file.conf \
-e SEATA_IP=192.168.40.199 -e SEATA_PORT=8091 \
--name seata seataio/seata-server:1.2.0