持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情
1.写在前面
很多微服务
项目的框架,一般会采用分布式事务
中间件,那这个就不得不讲一下seata
分布式中间件了。
一般来说,我们的项目,如果是传统的方式部署,直接从seata
官网,拿到seata
的服务的中间件,直接跑起来就行了。
但现在很多时候,我们的服务,要使用云原生k8s
部署,那就要使用seata
的docker镜像,运行seata了。
seata
的docker
镜像包,我们可以从docker hub
仓库,直接拉别人制作好的镜像包。
docker pull seataio/seata-server:1.4.1
但是,目前1.4.1版本的seata
支持的数据库:mysql
、oracle
、postgresql
所以当我们对seata支持的数据库类型进行扩展的时候,例如:支持dm
、kingbase
等国产数据库时
那这个官方的docker镜像包,就不再适合我们了。=_=!!!
那我们可以自己制作一个属于自己的seata
docker镜像包。
开干!!!
2.seata镜像包制作
2.1seata源码编译
我们对seata进行扩展,那我们就得打包编译,一个可运行的seata服务。
这里可以参考,我之前的文章,例如:点击查看
这个就是我们编译后的seata服务。
2.2启动命令文件编写
- startServer.sh
#!/bin/bash
source /etc/profile
cd /opt/jxbp/seata
mkdir logs
# 启动seata
nohup ./bin/seata-server.sh > ./logs/seata.log.out 2>&1 &
# seata注册到nacos的ip和端口,不配置默认获取本机ip(docker容器ip)
echo $SEATA_IP $SEATA_PORT
tail -f logs/seata.log.out
复制代码
2.3Dockerfile文件编写
- Dockerfile
FROM openjdk:8u332-jdk
RUN mkdir -p /opt/jxbp
WORKDIR /opt/jxbp
COPY ./seata ./seata
COPY ./startServer.sh .
ENTRYPOINT ["sh", "/opt/jxbp/startServer.sh"]
复制代码
2.4build.sh构建文件编写
- build.sh
docker build -t llsydn/seata:1.4.1 -f ./Dockerfile .
docker push llsydn/jxbp/seata:1.4.1
docker rmi llsydn/jxbp/seata:1.4.1
复制代码
执行命令构建,并push到自己的
harbor
仓库
执行
./build.sh
复制代码
3.docker启动seata镜像
- 启动命令
docker run --name seata-server \
-p 8091:8091 \
-e SEATA_IP=192.168.4.xxx \
-e SEATA_PORT=8091 \
llsydn/seata:1.4.1
复制代码
这里要指定
SEATA_IP
为宿主机ip,否则默认会用docker容器的ip。
可以参考:官方docker部署文档
好了,以上就是我个人的实操了。
个人理解,可能也不够全面,班门弄斧了。
好了,今天就先到这里了!!!^_^
如果觉得有收获的,帮忙点赞、评论、收藏
一下呗!!!