行业资讯
docker-compose安装seata
整体结构seata-docker/ ├── Dockerfile # Seata服务镜像构建 ├── application.yml # Seata服务配置注册nacos、db存储 ├── docker-compose.yml └── sql/ └── seata_init.sql # TC全局事务表初始化SQL1. 编写 Dockerfileseata 服务镜像# 基础镜像 seata 1.6.1 FROM seataio/seata-server:1.6.1 # 复制自定义配置文件到容器配置目录 COPY application.yml /seata/conf/application.yml # 暴露Seata默认端口 EXPOSE 80912. Seata 服务配置文件 application.ymlserver: port: 8091 seata: # 注册中心 nacos registry: type: nacos nacos: server-addr: nacos:8848 namespace: public group: SEATA_GROUP application: seata-server # 配置中心 nacos config: type: nacos nacos: server-addr: nacos:8848 namespace: public group: SEATA_GROUP # 存储模式 dbmysql store: mode: db db: datasource: druid db-type: mysql driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://mysql:3306/seata_server?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLfalse user: root password: root123456 min-conn: 5 max-conn: 303. 初始化 SQL seata_init.sqlCREATE DATABASE IF NOT EXISTS seata_server DEFAULT CHARACTER SET utf8mb4; USE seata_server; -- 全局事务表 CREATE TABLE IF NOT EXISTS global_table ( xid varchar(128) NOT NULL COMMENT 全局事务ID, transaction_id bigint DEFAULT NULL, status tinyint NOT NULL COMMENT 事务状态, application_id varchar(32) DEFAULT NULL, transaction_service_group varchar(32) DEFAULT NULL, transaction_name varchar(128) DEFAULT NULL, timeout int DEFAULT NULL, begin_time bigint DEFAULT NULL, commit_time bigint DEFAULT NULL, rollback_time bigint DEFAULT NULL, PRIMARY KEY (xid), KEY idx_status (status), KEY idx_transaction_service_group (transaction_service_group) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 分支事务表 CREATE TABLE IF NOT EXISTS branch_table ( branch_id bigint NOT NULL, xid varchar(128) NOT NULL, transaction_id bigint DEFAULT NULL, resource_group_id varchar(32) DEFAULT NULL, resource_id varchar(256) DEFAULT NULL, branch_type varchar(8) DEFAULT NULL, status tinyint DEFAULT NULL, client_id varchar(64) DEFAULT NULL, application_data varchar(2000) DEFAULT NULL, create_time bigint DEFAULT NULL, update_time bigint DEFAULT NULL, PRIMARY KEY (branch_id), KEY idx_xid (xid) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 锁表 CREATE TABLE IF NOT EXISTS lock_table ( row_key varchar(128) NOT NULL, xid varchar(96) DEFAULT NULL, transaction_id bigint DEFAULT NULL, branch_id bigint NOT NULL, resource_id varchar(256) DEFAULT NULL, table_name varchar(32) DEFAULT NULL, pk varchar(36) DEFAULT NULL, gmt_create datetime DEFAULT NULL, gmt_modified datetime DEFAULT NULL, PRIMARY KEY (row_key), KEY idx_xid (xid), KEY idx_branch_id (branch_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;4. docker-compose.yml整合 mysql nacos seataversion: 3.8 services: # Mysql 存储seata事务表 mysql: image: mysql:8.0 container_name: seata-mysql restart: always environment: MYSQL_ROOT_PASSWORD: root123456 volumes: - ./sql/seata_init.sql:/docker-entrypoint-initdb.d/seata_init.sql - mysql-data:/var/lib/mysql ports: - 3306:3306 networks: seata-net: aliases: - mysql # Nacos 注册配置中心 nacos: image: nacos/nacos-server:2.2.3 container_name: seata-nacos restart: always environment: MODE: standalone ports: - 8848:8848 - 9848:9848 volumes: - nacos-data:/home/nacos/data networks: seata-net: aliases: - nacos # Seata TC 协调服务基于本地Dockerfile构建 seata-server: build: context: ./ dockerfile: Dockerfile container_name: seata-server restart: always ports: - 8091:8091 depends_on: - mysql - nacos networks: seata-net: aliases: - seata-server volumes: mysql-data: nacos-data: networks: seata-net: driver: bridge5. 启动与验证步骤5.1 目录结构确认seata-docker/ ├── Dockerfile ├── application.yml ├── docker-compose.yml └── sql/ └── seata_init.sql5.2 一键启动# 后台启动 docker-compose up -d # 查看日志观察seata是否成功注册nacos、连接mysql docker-compose logs -f seata-server5.3 验证成功标志打开 Nacos 控制台http://localhost:8848/nacos服务列表出现seata-serverMySQL 数据库自动创建seata_server库包含 global_table /branch_table/lock_tableseata 日志无报错正常监听 8091 端口。6. 微服务客户端配置SpringCloud Alibaba业务项目application.yml连接容器内 Seataspring: cloud: alibaba: seata: tx-service-group: my_tx_group seata: registry: type: nacos nacos: server-addr: 127.0.0.1:8848 config: type: nacos nacos: server-addr: 127.0.0.1:88487. 常用操作命令# 停止服务 docker-compose down # 停止并清空数据卷重置所有数据 docker-compose down -v # 重新构建seata镜像并启动 docker-compose up -d --build补充说明版本可替换seataio/seata-server:1.7.1、nacos 2.3.2密码、端口、nacos namespace、mysql 库名可自行修改业务库必须手动执行undo_log建表语句仅 TC 库由 docker 自动初始化容器内部服务互通使用服务名nacos/mysql宿主机客户端使用127.0.0.1。
郑州网站建设
网页设计
企业官网