首页 > 其他分享 >Docker安装配置Seata-Server

Docker安装配置Seata-Server

时间:2024-11-19 13:06:54浏览次数:1  
标签:seata nacos server Docker Server root docker resources Seata

1 部署

官方文档指引

1.1 client

每个业务数据库都要新建 undo_log 表。

对 springboot 应用,执行 client - MySQL - AT,切tag=1.5.2:

https://github.com/seata/seata/blob/v1.5.2/script/client/at/db/mysql.sql

1.2 server

新建 seata-for-hire 数据库,执行 server - MySQL:

https://github.com/seata/seata/blob/v1.5.2/script/server/db/mysql.sql

2 Docker

拉取镜像:

$ docker pull seataio/seata-server:1.5.2
1.5.2: Pulling from seataio/seata-server
e7c96db7181b: Already exists
f910a506b6cb: Already exists
b6abafe80f63: Pull complete
f9a900a85ba4: Pull complete
7d27a398a423: Pull complete
8fdfdcebe751: Pull complete
6df95cee0f43: Pull complete
5b571cda842d: Pull complete
Digest: sha256:90c7bae99eba72cdf42847b4812b2b03ade16eebfa33b87badd22a122542d647
Status: Downloaded newer image for seataio/seata-server:1.5.2
docker.io/seataio/seata-server:1.5.2

拷贝命令:

3 启动容器

$ docker run --name seata-server \
-p 8091:8091 \
-d seataio/seata-server:1.5.2
8a83dd2dec376ad884cb83470e99ede3c91dfecb0d6d5d3f1f5dd747b4965d6c

$ docker ps
CONTAINER ID   IMAGE                        COMMAND                   CREATED          STATUS             PORTS                              NAMES
xx   seataio/seata-server:1.5.2   "xx"   51 seconds ago   Up 48 seconds      7091/tcp, 0.0.0.0:8091->8091/tcp   seata-server

4 配置

进入容器内部看配置文件:

$ docker exec -it seata-server sh
/seata-server # ls -l
total 16
drwxr-xr-x    6 root     root          4096 Jan  1  1970 classes
drwxr-xr-x    1 root     root          4096 Jan  1  1970 libs
drwxr-xr-x    6 root     root          4096 Jan  1  1970 resources
drwxr-xr-x    2 root     root          4096 Jun 20 07:07 sessionStore


/seata-server # cd resources/
/seata-server/resources # ls -l
total 44
drwxr-xr-x    3 root     root          4096 Jan  1  1970 META-INF
-rw-r--r--    1 root     root          4471 Jan  1  1970 application.example.yml
-rw-r--r--    1 root     root           960 Jan  1  1970 application.yml
-rw-r--r--    1 root     root          2602 Jan  1  1970 logback-spring.xml

application.yml,要挂载它。退出容器,将刚才那个配置文件复制到宿主机:

$ docker cp seata-server:/seata-server/resources /Users/javaedge/Downloads/soft/seata/
Successfully copied 64.5kB to /Users/javaedge/Downloads/soft/seata/

这就复制到我的宿主机了:

注意 nacos(基于 PC 本地下载的 nacos 源码构建启动的) 的 ip:

修改新增这段配置:

server:
  port: 7091

spring:
  application:
    name: seata-server

logging:
  config: classpath:logback-spring.xml
  file:
    path: ${user.home}/logs/seata
  extend:
    logstash-appender:
      destination: 127.0.0.1:4560
    kafka-appender:
      bootstrap-servers: 127.0.0.1:9092
      topic: logback_to_logstash

console:
  user:
    username: seata
    password: seata

seata:
  config:
    # support: nacos, consul, apollo, zk, etcd3
    type: nacos
    nacos:
      server-addr: 172.17.0.2:8848
      namespace:
      group: SEATA_GROUP
      username: nacos
      password: nacos
  registry:
    # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    type: nacos
    nacos:
      application: seata-server
      server-addr: 172.17.0.2:8848
      group: SEATA_GROUP
      namespace:
      cluster: default
      username: nacos
      password: nacos
  store:
    # support: file 、 db 、 redis
    mode: db
    db:
      datasource: druid
      db-type: mysql
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/seata-for-hire?rewriteBatchedStatements=true
      user: root
      password: 123456
      min-conn: 5
      max-conn: 100
      global-table: global_table
      branch-table: branch_table
      lock-table: lock_table
      distributed-lock-table: distributed_lock
      query-limit: 100
      max-wait: 5000
#  server:
#    service-port: 8091 #If not configured, the default is '${server.port} + 1000'
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

rewriteBatchedStatements

默认 false。无论 'allowMultiQueries' 设置如何,驱动是否应使用多查询,以及在调用 'executeBatch()' 时,是否应对 INSERT 和 REPLACE 类型的预备语句进行改写,把它们变为多值子句语句?

如果使用的是非预处理的简单声明,并且没有对输入数据进行妥善清理,这可能导致 SQL 注入。此外,对预备语句,如在使用 'PreparedStatement.set*Stream()' 时没有指定流长度,驱动将无法确定每批次的最优参数数量,并可能报错说生成的数据包过大。 对于仅包括 INSERT 或 REPLACE 语句的批次重写,'Statement.getGeneratedKeys()' 方法才有效果。

当同时用 "rewriteBatchedStatements=true"、"INSERT ... ON DUPLICATE KEY UPDATE" 对语句改写时,服务器对批量操作中所有受影响(或已找到)的行只会返回一个统一值,并且无法将之正确映射回最初的语句。此时,如果批量操作的总计数为零,驱动会为每一个批量语句返回 "0";如果总计数大于零,则返回 'Statement.SUCCESS_NO_INFO'。

Default Value false
Since Version 3.1.13

外部的配置文件修改完毕后,还要挂载,需要重建容器:

javaedge@JavaEdgedeMac-mini resources % docker stop seata-server
seata-server

javaedge@JavaEdgedeMac-mini resources % docker rm seata-server
seata-server

启动容器:

javaedge@JavaEdgedeMac-mini resources % docker run --name seata-server \
-p 8091:8091 \
-p 7091:7091 \
-v /Users/javaedge/Downloads/soft/seata/resources://seata-server/resources \
-d seataio/seata-server:1.5.2
455c1a2d108e4e533359bda66b6c7c909366e7536dfe4b5e451e97626743f2e4


javaedge@JavaEdgedeMac-mini resources % docker ps
CONTAINER ID   IMAGE                        COMMAND                   CREATED              STATUS              PORTS                                            NAMES
d2555578d828   seataio/seata-server:1.5.2   "java -Djava.securit…"   About a minute ago   Up About a minute   0.0.0.0:7091->7091/tcp, 0.0.0.0:8091->8091/tcp   seata-server

查看容器内日志,启动成功:

成功注册到 nacos:

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化
  • 活动&券等营销中台建设
  • 交易平台及数据中台等架构和开发设计
  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
  • LLM Agent应用开发
  • 区块链应用开发
  • 大数据开发挖掘经验
  • 推荐系统项目

目前主攻市级软件项目设计、构建服务全社会的应用系统。

参考:

本文由博客一文多发平台 OpenWrite 发布!

标签:seata,nacos,server,Docker,Server,root,docker,resources,Seata
From: https://www.cnblogs.com/JavaEdge/p/18554638

相关文章

  • docker原理、常用命令,以及部署nginx、tomcat、es+kibana练习(一)
    基本结构镜像(image):docker镜像可以当作一个模板,通过这个模板可以创建多个容器。例如一个tomcat镜像=>运行=>容器(提供服务)容器(container):docker利用容器技术,可以独立运行一个或一组应用(容器间相互隔离)docker容器通过镜像来创建,即容器中的进程依赖于镜像中的文......
  • 尚硅谷Docker实战教程学习笔记
    尚硅谷Docker实战教程学习笔记我从没想过因为即将要学习dockerfile而激动,也因这激动而顿感羞愧。————20241029目录尚硅谷Docker实战教程学习笔记写在前面1.Docker简介2.Docker安装3.Docker常用命令4.Docker镜像5.本地镜像发布到阿里云6.本地镜像发布到私有库7.Docker......
  • 运维系列:Docker学习笔记(3)-- 如何使用Dockerfile构建镜像
    Docker学习笔记(3)--如何使用Dockerfile构建镜像Docker学习笔记(3)--如何使用Dockerfile构建镜像1.Dockerfile的书写规则及指令使用方法(1)FROM(指定基础image)该指令有两种格式:(2)MAINTAINER(用来指定镜像创建者信息)格式:(3)RUN(安装软件用)该指令有两种格式:......
  • docker部署postgres并配置远程访问
    要使用Docker部署PostgreSQL并配置远程访问,可以按照以下步骤进行:拉取PostgreSQL镜像:使用Docker命令拉取PostgreSQL的官方镜像。dockerpullpostgres创建并运行PostgreSQL容器:创建一个PostgreSQL容器,并设置环境变量、端口映射和数据卷。dockerrun-it--namepost......
  • Docker Registry 镜像
    @Trance233'usestrict'consthub_host='registry-1.docker.io'constauth_url='https://auth.docker.io'constworkers_url='https://xxx.com'constPREFLIGHT_INIT={status:204,headers:newHeaders({......
  • SqlServer数据库恢复备份数据的方法
    一、如何备份 二、开始还原当时在公司是要将阿里云的sqlserver中的数据备份一份到公司内网数据库,并将数据恢复到公司内网SqlServer数据库,当我按照原库的要求创建了新的空库。在SSMS控制台还原的时候,它竟然报错,报:system.data.sqlclient.Sqlerror:备份集中的数据库备份与现......
  • MutationObserver 防止用户篡改水印
    MutationObserver应用于水印制作时,之所以能够有效防止用户篡改数据,主要归因于其对DOM(文档对象模型)元素变化的强大监视能力。以下是对此现象的详细解释:一、MutationObserver的工作原理MutationObserver是一个监视DOM变动的接口,它能够监听DOM树的变化,并在检测到变动时执行回调函数......
  • docker pull报错:dial tcp: no such host
    dockerpull报错:dialtcp:nosuchhost0xwang于2024-09-2818:07:39发布阅读量1.1k收藏3点赞数5文章标签:dockertcp/ip容器版权有一段时间没用docker了,今天使用docker下载镜像竟然报错,而且是莫名其妙的错误,奔走相告,避免后来者踩坑!Errorresponsefromdaemon:Get"h......
  • Oracle,PostgreSQL,MySql,SqlServer各数据库查元信息的SQL
    Oracle查询表字段信息SELECTa.COLUMN_NAMEASB_NAME,--字段名称a.DATA_TYPE,--字段数据类型CASEWHENa.COLUMN_NAMEIN(SELECTcols.column_nameFROMall_constraintscons,all_cons_columnsco......
  • 目前国内可用Docker镜像源汇总(截至2024年11月)
    本文主要讲述了由于特殊原因国内的Docker镜像源出现问题,国内许多常见的镜像源如网易、百度等已不可用。文中介绍了中科大镜像源的暂时关闭情况,以及阿里镜像源包括私人阿里镜像加速器的使用方式,并提供了一些可用的镜像源地址和相应的设置配置代码,最后强调了使用Docker应专注于......