Docker打包制作seata镜像(Dockerfile方式),并运行启动

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情


1.写在前面

很多微服务项目的框架,一般会采用分布式事务中间件,那这个就不得不讲一下seata分布式中间件了。

一般来说,我们的项目,如果是传统的方式部署,直接从seata官网,拿到seata的服务的中间件,直接跑起来就行了。

但现在很多时候,我们的服务,要使用云原生k8s部署,那就要使用seata的docker镜像,运行seata了。

seatadocker镜像包,我们可以从docker hub仓库,直接拉别人制作好的镜像包。

image.png

docker hub地址

docker pull seataio/seata-server:1.4.1

但是,目前1.4.1版本的seata支持的数据库:mysqloraclepostgresql

所以当我们对seata支持的数据库类型进行扩展的时候,例如:支持dmkingbase等国产数据库时

那这个官方的docker镜像包,就不再适合我们了。=_=!!!

image.png

那我们可以自己制作一个属于自己的seatadocker镜像包。

开干!!!

image.png

2.seata镜像包制作

2.1seata源码编译

我们对seata进行扩展,那我们就得打包编译,一个可运行的seata服务。

这里可以参考,我之前的文章,例如:点击查看

在这里插入图片描述

这个就是我们编译后的seata服务。

image.png

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。

image.png

可以参考:官方docker部署文档


好了,以上就是我个人的实操了。

个人理解,可能也不够全面,班门弄斧了。

好了,今天就先到这里了!!!^_^

如果觉得有收获的,帮忙点赞、评论、收藏一下呗!!!

image.png

猜你喜欢

转载自juejin.im/post/7108187624447148069