centos安装docker,docker安装mysql、redis、minio、mongo、rabbitmq、nacos、seata、elastic...
# 关闭防火墙systemctl stop firewalld# 关闭防火墙开机自启systemctl disable firewalld# 打开防火墙systemctl start firewalld# 打开防火墙开机自启systemctl enablefirewalld
安装Docker CE
视频:https://www.bilibili.com/video/BV1u8vdeWEDW/?spm_id_from=333.999.0.0&vd_source=82896d496a145edb98a97cfbafcc0448
卸载
如果之前安装过旧版本的Docker,可以使用下面命令卸载:
yum remove docker\docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine \docker-ce
安装docker
安装yum工具:
yum install-yyum-utils \device-mapper-persistent-data \lvm2 --skip-broken
更新本地镜像源:
# 设置docker镜像源yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed-i's/download.docker.com/mirrors.aliyun.com\/docker-ce/g'/etc/yum.repos.d/docker-ce.repoyum makecache fast
安装:
yum install-ydocker-ce
docker基础命令
# 查看docker版本docker-v# 启动docker服务systemctl start docker# 停止docker服务systemctl stop docker# 重启docker服务systemctl restart docker# 拉取镜像dockerpull 镜像名# 查看容器命令dockerps# 查看容器命令 包括停止的容器dockerps-a# 关闭容器dockerstop 容器名# 删除容器dockerrm容器名# 打包镜像dockersave -oxx.tar 镜像名/镜像id# 加载镜像dockerload -ixx.tar
配置镜像加速
mkdir-p/etc/dockercd/etc/dockervimdaemon.json
{ "registry-mirrors":["https://docker.m.daocloud.io","https://dockerhub.icu","https://docker.1panel.live","https://docker.awsl9527.cn"]}
# 刷新配置重启systemctl daemon-reloadsystemctl restart docker# 查看镜像是否生效dockerinfo
安装mysql:8.0.26
视频:【docker安装mysql】 https://www.bilibili.com/video/BV1LsiFeVE2N/?share_source=copy_web&vd_source=23299b0b57096c0bbced9f14616531b8
拉取
dockerpull mysql:8.0.26
运行
前置处理:
# 创建挂载文件mkdir-p/home/mysql/{ conf,data,log}# 启动mysql容器dockerrun -p3306:3306 --namemysql -eMYSQL_ROOT_PASSWORD=000000 -dmysql:8.0.26# 拷贝配置文件dockercpmysql:/etc/mysql/my.cnf /home/mysql/conf# 停止mysql容器dockerstop mysql# 删除mysql容器dockerrmmysql
启动命令:
dockerrun \-p3306:3306 \--restart=always \--namemysql \--privileged=true \-eMYSQL_ROOT_PASSWORD=000000 \-v/home/mysql/log:/var/log/mysql \-v/home/mysql/data:/var/lib/mysql \-v/home/mysql/conf/my.cnf:/etc/mysql/my.cnf \-dmysql:8.0.26 \--lower-case-table-names=1
参数介绍:
-p3306:3306:将容器的 3306端口映射到主机的 3306端口--privileged=true:挂载文件权限设置--restart=always:设置开机后自动重启容器--namemysql:容器名称-eMYSQL_ROOT_PASSWORD=000000:初始化 root 用户的密码-v/home/mysql/log:/var/log/mysql:将日志文件夹挂载到主机-v/home/mysql/data:/var/lib/mysql:将数据文件夹挂载到主机-v/home/mysql/conf/my.cnf:/etc/mysql/my.cnf:将配置文件夹挂在到主机-d:后台启动--lower-case-table-names=1:不区分大小写
注意点:
在MySQL 5.7之前则允许数据库初始化和启动的值不一致且以启动值为准。
MySQL8.0 新增了data dictionary的概念,数据初始化的时候在linux下默认使用lower-case-table-names=0的参数,数据库启动的时候读取的my.cnf文件中的值。若二者值不一致则在mysql的错误日志中记录报错信息。
报错信息:
2024-08-01T15:51:29.204272Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server (‘0’) and data dictionary (‘1’).
2024-08-01T15:51:29.204532Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2024-08-01T15:51:29.204634Z 0 [ERROR] [MY-010119] [Server] Aborting
配置远程登录
root的host为’%'则无需处理
# 进入客户端dockerexec-itmysql bash# 登录mysqlmysql -uroot-p000000# 查看权限信息use mysql;selecthost, user, authentication_string, plugin from user;# 更新权限update user sethost='%'where user='root';# 刷新权限FLUSH PRIVILEGES;
安装Redis:7.0.10
视频:【docker安装redis】 https://www.bilibili.com/video/BV1hFiweMEFV/?share_source=copy_web&vd_source=23299b0b57096c0bbced9f14616531b8
拉取
dockerpull redis:7.0.10
运行
前置处理:
# 创建挂载文件mkdir-p/home/redis/{ conf,data}# 创建配置文件cd/home/redis/conftouchredis.conf
Redis configuration | Docs
前往官方地址下载对应版本的配置文件
将内容拷贝到redis.conf中,修改配置bind、requirepass
启动命令:
dockerrun \--restart=always \-p6379:6379 \--nameredis \-v/home/redis/conf/redis.conf:/etc/redis/redis.conf \-v/home/redis/data:/data \-dredis:7.0.10 redis-server /etc/redis/redis.conf
参数介绍:
--restart=always:开机自启--nameredis:容器名称-v/home/redis/conf/redis.conf:/etc/redis/redis.conf:将配置文件挂载到主机-v/home/redis/data:/data:将数据挂载到主机-d:后台运行
安装minio:latest
拉取
dockerpull minio/minio
运行
前置处理:
mkdir-p/home/minio/{ config,data}
启动命令:
dockerrun -p9000:9000 -p9090:9090 \--net=host \--nameminio \-d--restart=always \-e"MINIO_ACCESS_KEY=admin"\-e"MINIO_SECRET_KEY=admin000"\-v/home/minio/data:/data \-v/home/minio/config:/root/.minio \minio/minio server \/data --console-address ":9090"-address":9000"
访问地址:MinIO Console
参数介绍:
dockerrun:启动一个新的 Docker 容器。-p9000:9000 -p9090:9090:将容器的 9000端口和 9090端口映射到主机的 9000和 9090端口。这样可以通过主机的这两个端口访问 MinIO 服务和控制台。--net=host:使用主机网络模式。这使得容器使用主机的网络堆栈,而不是 Docker 的虚拟网络。这意味着容器将直接使用主机的 IP 地址。--nameminio:给容器指定一个名称为minio,方便后续管理。-d:以后台模式运行容器(分离模式)。--restart=always:设置容器自动重启策略。如果容器停止或 Docker 服务重启,容器会自动重新启动。-e"MINIO_ACCESS_KEY=admin":设置环境变量 `MINIO_ACCESS_KEY`,用于配置 MinIO 的访问密钥。-e"MINIO_SECRET_KEY=admin000":设置环境变量 `MINIO_SECRET_KEY`,用于配置 MinIO 的秘密密钥。-v/home/minio/data:/data:将主机的 `/home/minio/data`目录挂载到容器内的 `/data`目录,用于持久化存储 MinIO 的数据。-v/home/minio/config:/root/.minio:将主机的 `/home/minio/config`目录挂载到容器内的 `/root/.minio`目录,用于持久化 MinIO 的配置。minio/mini:指定要使用的 Docker 镜像,这里是 MinIO 的官方镜像。server /data:启动 MinIO 服务器并指定数据存储目录为 `/data`。--console-address ":9090":指定 MinIO 控制台的地址为 9090端口。-address":9000":指定 MinIO 服务的地址为 9000端口。
安装mongo:7.0.0
拉取
dockerpull mongo:7.0.0
运行
前置处理:
# 创建挂载文件mkdir-p/home/mongo/{ data,conf}# 启动mogo容器dockerrun --namemongo -d-p27017:27017 mongo:7.0.0# 拷贝配置文件到本地dockercpmongo:/etc/mongod.conf.orig /home/mongo/conf# 停止mogo容器并删除dockerstop mongodockerrmmongo
启动命令:
dockerrun \--restart=always \--namemongo \-v/home/mongo/data:/data/db \-v/home/mongo/conf/mongod.conf.orig:/etc/mongod.conf.orig \-eMONGO_INITDB_ROOT_USERNAME=admin \-eMONGO_INITDB_ROOT_PASSWORD=000000 \-d-p27017:27017 mongo:7.0.0 --auth
参数介绍:
--restart=always:docker启动后自启--namemongo:容器名-v/home/mongo/data:/data/db;数据文件挂载-v/home/mongo/conf/mongod.conf.orig:/etc/mongod.conf.orig:配置文件挂载-eMONGO_INITDB_ROOT_USERNAME=admin:用户名-eMONGO_INITDB_ROOT_PASSWORD=000000:密码-d:后台启动-p: 端口映射--auth:开启权限认证
安装rabbitmq:3.12.0-management
拉取
dockerpull rabbitmq:3.12.0-management
运行
dockerrun -d--namerabbitmq --restart=always -p5672:5672 -p15672:15672 rabbitmq:3.12.0-management
访问地址: http://192.168.10.102:15672/ , 用户名/密码:guest/guest
安装延迟队列插件
下载rabbitmq_delayed_message_exchange-3.12.0.ez文件上传到RabbitMQ所在服务器,下载地址:https://www.rabbitmq.com/community-plugins.html
点击跳转找到对应版本的插件下载
上传到服务器
# 下载上传下载命令yum -yinstalllrzszrz 选择对应的文件上传到服务器# 拷贝插件到容器dockercprabbitmq_delayed_message_exchange-3.12.0.ez rabbitmq:/plugins# 验证是否安装成功# 进入容器dockerexec-itrabbitmq /bin/bash# 进入插件目录cdplugins# 查询插件ls-l|grepdelay# 启动插件rabbitmq-plugins enablerabbitmq_delayed_message_exchange# 退出容器exit# 重启容器dockerrestart rabbitmq
安装nacos/nacos-server:v2.2.3
拉取
dockerpull nacos/nacos-server:v2.2.3
运行
前置处理:
- 创建nacos数据库
CREATEDATABASEnacos_config CHARACTERSETutf8 COLLATEutf8_bin;
- 创建nacos数据库表
///* 数据库全名 = nacos_config *//* 表名称 = config_info *///CREATETABLE`config_info`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'id',`data_id`varchar(255)NOTNULLCOMMENT'data_id',`group_id`varchar(128)DEFAULTNULL,`content`longtextNOTNULLCOMMENT'content',`md5`varchar(32)DEFAULTNULLCOMMENT'md5',`gmt_create`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00'COMMENT'创建时间',`gmt_modified`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00'COMMENT'修改时间',`src_user`textCOMMENT'source user',`src_ip`varchar(20)DEFAULTNULLCOMMENT'source ip',`app_name`varchar(128)DEFAULTNULL,`tenant_id`varchar(128)DEFAULT''COMMENT'租户字段',`c_desc`varchar(256)DEFAULTNULL,`c_use`varchar(64)DEFAULTNULL,`effect`varchar(64)DEFAULTNULL,`type`varchar(64)DEFAULTNULL,`c_schema`text,`encrypted_data_key`textNOTNULLCOMMENT'秘钥',PRIMARYKEY(`id`),UNIQUEKEY`uk_configinfo_datagrouptenant`(`data_id`,`group_id`,`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';///* 数据库全名 = nacos_config *//* 表名称 = config_info_aggr *///CREATETABLE`config_info_aggr`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'id',`data_id`varchar(255)NOTNULLCOMMENT'data_id',`group_id`varchar(128)NOTNULLCOMMENT'group_id',`datum_id`varchar(255)NOTNULLCOMMENT'datum_id',`content`longtextNOTNULLCOMMENT'内容',`gmt_modified`datetimeNOTNULLCOMMENT'修改时间',`app_name`varchar(128)DEFAULTNULL,`tenant_id`varchar(128)DEFAULT''COMMENT'租户字段',PRIMARYKEY(`id`),UNIQUEKEY`uk_configinfoaggr_datagrouptenantdatum`(`data_id`,`group_id`,`tenant_id`,`datum_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';///* 数据库全名 = nacos_config *//* 表名称 = config_info_beta *///CREATETABLE`config_info_beta`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'id',`data_id`varchar(255)NOTNULLCOMMENT'data_id',`group_id`varchar(128)NOTNULLCOMMENT'group_id',`app_name`varchar(128)DEFAULTNULLCOMMENT'app_name',`content`longtextNOTNULLCOMMENT'content',`beta_ips`varchar(1024)DEFAULTNULLCOMMENT'betaIps',`md5`varchar(32)DEFAULTNULLCOMMENT'md5',`gmt_create`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00'COMMENT'创建时间',`gmt_modified`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00'COMMENT'修改时间',`src_user`textCOMMENT'source user',`src_ip`varchar(20)DEFAULTNULLCOMMENT'source ip',`tenant_id`varchar(128)DEFAULT''COMMENT'租户字段',`encrypted_data_key`textNOTNULLCOMMENT'秘钥',PRIMARYKEY(`id`),UNIQUEKEY`uk_configinfobeta_datagrouptenant`(`data_id`,`group_id`,`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';///* 数据库全名 = nacos_config *//* 表名称 = config_info_tag *///CREATETABLE`config_info_tag`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'id',`data_id`varchar(255)NOTNULLCOMMENT'data_id',`group_id`varchar(128)NOTNULLCOMMENT'group_id',`tenant_id`varchar(128)DEFAULT''COMMENT'tenant_id',`tag_id`varchar(128)NOTNULLCOMMENT'tag_id',`app_name`varchar(128)DEFAULTNULLCOMMENT'app_name',`content`longtextNOTNULLCOMMENT'content',`md5`varchar(32)DEFAULTNULLCOMMENT'md5',`gmt_create`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00'COMMENT'创建时间',`gmt_modified`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00'COMMENT'修改时间',`src_user`textCOMMENT'source user',`src_ip`varchar(20)DEFAULTNULLCOMMENT'source ip',PRIMARYKEY(`id`),UNIQUEKEY`uk_configinfotag_datagrouptenanttag`(`data_id`,`group_id`,`tenant_id`,`tag_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';///* 数据库全名 = nacos_config *//* 表名称 = config_tags_relation *///CREATETABLE`config_tags_relation`(`id`bigint(20)NOTNULLCOMMENT'id',`tag_name`varchar(128)NOTNULLCOMMENT'tag_name',`tag_type`varchar(64)DEFAULTNULLCOMMENT'tag_type',`data_id`varchar(255)NOTNULLCOMMENT'data_id',`group_id`varchar(128)NOTNULLCOMMENT'group_id',`tenant_id`varchar(128)DEFAULT''COMMENT'tenant_id',`nid`bigint(20)NOTNULLAUTO_INCREMENT,PRIMARYKEY(`nid`),UNIQUEKEY`uk_configtagrelation_configidtag`(`id`,`tag_name`,`tag_type`),KEY`idx_tenant_id`(`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';///* 数据库全名 = nacos_config *//* 表名称 = group_capacity *///CREATETABLE`group_capacity`(`id`bigint(20)unsignedNOTNULLAUTO_INCREMENTCOMMENT'主键ID',`group_id`varchar(128)NOTNULLDEFAULT''COMMENT'Group ID,空字符表示整个集群',`quota`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'配额,0表示使用默认值',`usage`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'使用量',`max_size`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'聚合子配置最大个数,,0表示使用默认值',`max_aggr_size`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'最大变更历史数量',`gmt_create`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00'COMMENT'创建时间',`gmt_modified`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00'COMMENT'修改时间',PRIMARYKEY(`id`),UNIQUEKEY`uk_group_id`(`group_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';///* 数据库全名 = nacos_config *//* 表名称 = his_config_info *///CREATETABLE`his_config_info`(`id`bigint(64)unsignedNOTNULL,`nid`bigint(20)unsignedNOTNULLAUTO_INCREMENT,`data_id`varchar(255)NOTNULL,`group_id`varchar(128)NOTNULL,`app_name`varchar(128)DEFAULTNULLCOMMENT'app_name',`content`longtextNOTNULL,`md5`varchar(32)DEFAULTNULL,`gmt_create`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00',`gmt_modified`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00',`src_user`text,`src_ip`varchar(20)DEFAULTNULL,`op_type`char(10)DEFAULTNULL,`tenant_id`varchar(128)DEFAULT''COMMENT'租户字段',`encrypted_data_key`textNOTNULLCOMMENT'秘钥',PRIMARYKEY(`nid`),KEY`idx_gmt_create`(`gmt_create`),KEY`idx_gmt_modified`(`gmt_modified`),KEY`idx_did`(`data_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';///* 数据库全名 = nacos_config *//* 表名称 = tenant_capacity *///CREATETABLE`tenant_capacity`(`id`bigint(20)unsignedNOTNULLAUTO_INCREMENTCOMMENT'主键ID',`tenant_id`varchar(128)NOTNULLDEFAULT''COMMENT'Tenant ID',`quota`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'配额,0表示使用默认值',`usage`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'使用量',`max_size`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'聚合子配置最大个数',`max_aggr_size`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'最大变更历史数量',`gmt_create`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00'COMMENT'创建时间',`gmt_modified`datetimeNOTNULLDEFAULT'2010-05-05 00:00:00'COMMENT'修改时间',PRIMARYKEY(`id`),UNIQUEKEY`uk_tenant_id`(`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';CREATETABLE`tenant_info`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'id',`kp`varchar(128)NOTNULLCOMMENT'kp',`tenant_id`varchar(128)default''COMMENT'tenant_id',`tenant_name`varchar(128)default''COMMENT'tenant_name',`tenant_desc`varchar(256)DEFAULTNULLCOMMENT'tenant_desc',`create_source`varchar(32)DEFAULTNULLCOMMENT'create_source',`gmt_create`bigint(20)NOTNULLCOMMENT'创建时间',`gmt_modified`bigint(20)NOTNULLCOMMENT'修改时间',PRIMARYKEY(`id`),UNIQUEKEY`uk_tenant_info_kptenantid`(`kp`,`tenant_id`),KEY`idx_tenant_id`(`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';CREATETABLEusers (username varchar(50)NOTNULLPRIMARYKEY,password varchar(500)NOTNULL,enabled booleanNOTNULL);CREATETABLEroles (username varchar(50)NOTNULL,role varchar(50)NOTNULL,constraintuk_username_role UNIQUE(username,role));CREATETABLEpermissions (role varchar(50)NOTNULL,resource varchar(512)NOTNULL,actionvarchar(8)NOTNULL,constraintuk_role_permission UNIQUE(role,resource,action));INSERTINTOusers (username,password,enabled)VALUES('nacos','$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu',TRUE);INSERTINTOroles (username,role)VALUES('nacos','ROLE_ADMIN');
- 创建挂载文件
mkdir-p/home/nacos/log
启动命令:
dockerrun -d--namenacos-server -p8848:8848 -p9848:9848 \--restart=always \-eMODE=standalone \-eJVM_XMS=512m \-eJVM_XMX=512m \-eSPRING_DATASOURCE_PLATFORM=mysql \-eMYSQL_SERVICE_HOST=192.168.10.102 \-eMYSQL_SERVICE_PORT=3306\-eMYSQL_SERVICE_DB_NAME=nacos_config \-eMYSQL_SERVICE_USER=root \-eMYSQL_SERVICE_PASSWORD=000000 \-v/home/nacos/log:/home/nacos/logs \nacos/nacos-server:v2.2.3
访问地址:http://192.168.10.102:8848/nacos,默认账号nacos;密码nacos
参数解析:
MODE:启动方式 集群,单机NACOS_SERVERS:集群地址PREFER_HOST_MODE:支持ip还是域名模式MYSQL_SERVICE_PORT:NACOS运行端口MYSQL_SERVICE_IP:多网卡模式下可以指定IPSPRING_DATASOURCE_PLATFORM:单机模式下支持mysql数据库MYSQL_SERVICE_DB_PARAM:数据连接参数MYSQL_DATABASE_NUM:数据库编号
安装seataio/seata-server:1.7.1
拉取
dockerpull seataio/seata-server:1.7.1
运行
前置处理:
- 创建Seata数据库
CREATEDATABASEseata DEFAULTCHARACTERSETutf8mb4 DEFAULTCOLLATEutf8mb4_general_ci;
- 创建表
-- https://github.com/seata/seata/blob/1.7.1/script/server/db/mysql.sql-- -------------------------------- The script used when storeMode is 'db' ---------------------------------- the table to store GlobalSession dataCREATETABLEIFNOTEXISTS`global_table`(`xid`VARCHAR(128)NOTNULL,`transaction_id`BIGINT,`status`TINYINTNOTNULL,`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,PRIMARYKEY(`xid`),KEY`idx_status_gmt_modified`(`status`,`gmt_modified`),KEY`idx_transaction_id`(`transaction_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;-- the table to store BranchSession dataCREATETABLEIFNOTEXISTS`branch_table`(`branch_id`BIGINTNOTNULL,`xid`VARCHAR(128)NOTNULL,`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),PRIMARYKEY(`branch_id`),KEY`idx_xid`(`xid`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;-- the table to store lock dataCREATETABLEIFNOTEXISTS`lock_table`(`row_key`VARCHAR(128)NOTNULL,`xid`VARCHAR(128),`transaction_id`BIGINT,`branch_id`BIGINTNOTNULL,`resource_id`VARCHAR(256),`table_name`VARCHAR(32),`pk`VARCHAR(36),`status`TINYINTNOTNULLDEFAULT'0'COMMENT'0:locked ,1:rollbacking',`gmt_create`DATETIME,`gmt_modified`DATETIME,PRIMARYKEY(`row_key`),KEY`idx_status`(`status`),KEY`idx_branch_id`(`branch_id`),KEY`idx_xid`(`xid`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;CREATETABLEIFNOTEXISTS`distributed_lock`(`lock_key`CHAR(20)NOTNULL,`lock_value`VARCHAR(20)NOTNULL,`expire`BIGINT,primarykey(`lock_key`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;INSERTINTO`distributed_lock`(lock_key,lock_value,expire)VALUES('AsyncCommitting',' ',0);INSERTINTO`distributed_lock`(lock_key,lock_value,expire)VALUES('RetryCommitting',' ',0);INSERTINTO`distributed_lock`(lock_key,lock_value,expire)VALUES('RetryRollbacking',' ',0);INSERTINTO`distributed_lock`(lock_key,lock_value,expire)VALUES('TxTimeoutCheck',' ',0);
- 修改配置文件
# 创建挂载目录mkdir-p/home/seata/config# 启动临时容器dockerrun -d-p8091:8091 -p7091:7091 --nameseata-server seataio/seata-server:1.7.1# 拷贝临时容器的配置至宿主机dockercpseata-server:/seata-server/resources/. /home/seata/config# 删除临时容器dockerrm-fseata-server
修改配置文件:/home/seata/config/application.yml
seata:# 配置中心-nacosconfig:type:nacos # support: nacos, consul, apollo, zk, etcd3nacos:server-addr:192.168.10.102:8848namespace:group:SEATA_GROUP username:password:context-path:data-id:seata-server.properties # 注册中心-nacosregistry:type:nacos # support: nacos, eureka, redis, zk, consul, etcd3, sofanacos:application:seata-server server-addr:192.168.10.102:8848group:SEATA_GROUP namespace:cluster:default # TC 集群名称,下文 Seata 客户端中配置事务分组名和集群名映射使用username:password:
新建seata-server.properties
修改mysql连接信息:
#For details about configuration items, see https://seata.io/zh-cn/docs/user/configurations.html#Transport configuration, for client and servertransport.type=TCPtransport.server=NIOtransport.heartbeat=truetransport.enableTmClientBatchSendRequest=falsetransport.enableRmClientBatchSendRequest=truetransport.enableTcServerBatchSendResponse=falsetransport.rpcRmRequestTimeout=30000transport.rpcTmRequestTimeout=30000transport.rpcTcRequestTimeout=30000transport.threadFactory.bossThreadPrefix=NettyBosstransport.threadFactory.workerThreadPrefix=NettyServerNIOWorkertransport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandlertransport.threadFactory.shareBossWorker=falsetransport.threadFactory.clientSelectorThreadPrefix=NettyClientSelectortransport.threadFactory.clientSelectorThreadSize=1transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThreadtransport.threadFactory.bossThreadSize=1transport.threadFactory.workerThreadSize=defaulttransport.shutdown.wait=3transport.serialization=seatatransport.compressor=none#Transaction routing rules configuration, only for the clientservice.vgroupMapping.default_tx_group=default#If you use a registry, you can ignore itservice.default.grouplist=127.0.0.1:8091service.enableDegrade=falseservice.disableGlobalTransaction=false#Transaction rule configuration, only for the clientclient.rm.asyncCommitBufferLimit=10000client.rm.lock.retryInterval=10client.rm.lock.retryTimes=30client.rm.lock.retryPolicyBranchRollbackOnConflict=trueclient.rm.reportRetryCount=5client.rm.tableMetaCheckEnable=trueclient.rm.tableMetaCheckerInterval=60000client.rm.sqlParserType=druidclient.rm.reportSuccessEnable=falseclient.rm.sagaBranchRegisterEnable=falseclient.rm.sagaJsonParser=fastjsonclient.rm.tccActionInterceptorOrder=-2147482648client.tm.commitRetryCount=5client.tm.rollbackRetryCount=5client.tm.defaultGlobalTransactionTimeout=60000client.tm.degradeCheck=falseclient.tm.degradeCheckAllowTimes=10client.tm.degradeCheckPeriod=2000client.tm.interceptorOrder=-2147482648client.undo.dataValidation=trueclient.undo.logSerialization=jacksonclient.undo.onlyCareUpdateColumns=trueserver.undo.logSaveDays=7server.undo.logDeletePeriod=86400000client.undo.logTable=undo_logclient.undo.compress.enable=trueclient.undo.compress.type=zipclient.undo.compress.threshold=64k#For TCC transaction modetcc.fence.logTableName=tcc_fence_logtcc.fence.cleanPeriod=1h#Log rule configuration, for client and serverlog.exceptionRate=100#Transaction storage configuration, only for the server. The file, db, and redis configuration values are optional.store.mode=dbstore.lock.mode=dbstore.session.mode=dbstore.publicKey=#If `store.mode,store.lock.mode,store.session.mode` are not equal to `file`, you can remove the configuration block.store.file.dir=file_store/datastore.file.maxBranchSessionSize=16384store.file.maxGlobalSessionSize=512store.file.fileWriteBufferCacheSize=16384store.file.flushDiskMode=asyncstore.file.sessionReloadReadSize=100#These configurations are required if the `store mode` is `db`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `db`, you can remove the configuration block.store.db.datasource=druidstore.db.dbType=mysqlstore.db.driverClassName=com.mysql.jdbc.Driverstore.db.url=jdbc:mysql://192.168.10.102:3306/seata?useUnicode=true&rewriteBatchedStatements=truestore.db.user=rootstore.db.password=000000store.db.minConn=5store.db.maxConn=30store.db.globalTable=global_tablestore.db.branchTable=branch_tablestore.db.distributedLockTable=distributed_lockstore.db.queryLimit=100store.db.lockTable=lock_tablestore.db.maxWait=5000#These configurations are required if the `store mode` is `redis`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `redis`, you can remove the configuration block.store.redis.mode=singlestore.redis.single.host=127.0.0.1store.redis.single.port=6379store.redis.sentinel.masterName=store.redis.sentinel.sentinelHosts=store.redis.maxConn=10store.redis.minConn=1store.redis.maxTotal=100store.redis.database=0store.redis.password=store.redis.queryLimit=100#Transaction rule configuration, only for the serverserver.recovery.committingRetryPeriod=1000server.recovery.asynCommittingRetryPeriod=1000server.recovery.rollbackingRetryPeriod=1000server.recovery.timeoutRetryPeriod=1000server.maxCommitRetryTimeout=-1server.maxRollbackRetryTimeout=-1server.rollbackRetryTimeoutUnlockEnable=falseserver.distributedLockExpireTime=10000server.xaerNotaRetryTimeout=60000server.session.branchAsyncQueueSize=5000server.session.enableBranchAsyncRemove=falseserver.enableParallelRequestHandle=false#Metrics configuration, only for the servermetrics.enabled=falsemetrics.registryType=compactmetrics.exporterList=prometheusmetrics.exporterPrometheusPort=9898
启动命令:
dockerrun -d\--nameseata-server \--restart=always \-p8091:8091 \-p7091:7091 \-eSEATA_IP=192.168.10.102 \-v/home/seata/config:/seata-server/resources \seataio/seata-server:1.7.1
安装elasticsearch:7.12.1
Elasticsearch
拉取
dockerpull elasticsearch:7.12.1
运行
前置处理:
# 创建网络使kibana和es互联dockernetwork create es-net# 创建数据挂载文件mkdir-p/home/elasticsearch/{ data,log}
启动命令:
dockerrun -d\--namees \-e"ES_JAVA_OPTS=-Xms512m -Xmx512m"\-e"discovery.type=single-node"\-ves-data:/home/elasticsearch/data \-ves-logs:/home/elasticsearch/logs \--privileged\--networkes-net \-p9200:9200 \-p9300:9300 \elasticsearch:7.12.1
访问地址:http://192.168.10.102:9200
参数介绍:
-e"cluster.name=es-docker-cluster":设置集群名称-e"http.host=0.0.0.0":监听的地址,可以外网访问-e"ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小-e"discovery.type=single-node":非集群模式-ves-data:/home/elasticsearch/data:挂载逻辑卷,绑定es的数据目录 -ves-logs:/home/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录-ves-plugins:/home/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录--privileged:授予逻辑卷访问权--networkes-net:加入一个名为es-net的网络中-p9200:9200:端口映射配置
Kibana
拉取
dockerpull kibana:7.12.1
运行
dockerrun -d\--namekibana \-eELASTICSEARCH_HOSTS=http://es:9200 \--network=es-net \-p5601:5601 \kibana:7.12.1
访问地址:http://192.168.10.102:5601
参数介绍:
--networkes-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中-eELASTICSEARCH_HOSTS=http://es:9200:设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch -p5601:5601:端口映射配置
安装IK分词器
# 进入容器内部dockerexec-ites /bin/bash# 在线下载并安装./bin/elasticsearch-plugin installhttps://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip# 退出exit#重启容器dockerrestart es# 查看日志dockerlogs -fes |grepplugin
持续更新中。。。