@


前言

受限于网上资源有限,加上小白一枚,笔者在Tars入门部署时踩了不少的坑,不过最终还是部署成功了,便想记录一下其中过程与心得;

Win10下Docker部署TarsJava(SpringBoot)主要分为这几部分:Docker部署,Tars部署以及测试,说难不难但里边处处埋坑,一不小心陷进去头发没了几斤……

这篇文章将从Docker开始描述笔者掉进去的坑,帮助小伙伴们闭坑。

统一说明:这些坑点问题均在2021年7月12号前发现,之后可能会优化,具体以官方消息为准。

一些参考资料:

TarsdocGitHub在线文档

B站TarsJava入门实战视频

TarsJava GitHub地址


1. 相关环境版本:

为什么要列出环境版本呢?是因为这里边有坑。

环境 对应版本
系统 Win10 21H1
Docker版本 20.10.7
JDK版本 1.8
SpringBoot版本 2.0.3.RELEASE
Maven版本 3.6.3
Tars版本 1.7.x(1.7.2)

坑点一:VMware与Win10 Docker冲突

大多数Windows操作系统的小伙伴电脑里都会装VMware虚拟机跑Linux操作系统,这时如果想在Windows里安装Docker,你可能会发现:要么安装不了Docker,要么安装完后VMware不能使用了。具体来说是VMware的虚拟化方案与Windows的Hpyer-V冲突,不能共存。如果想要二者共存,可以采用以下方法:

  • 将VMware版本升级到15.5.5以上,同时Win10版本升级到20H1以上;

坑点二:20.版本TarsJava(SpringBoot)依赖文件缺失

这个问题主要发生在Tars 2.0版本,如果你使用的是2.0版本,你会发现有些依赖标红,无法从Maven中央仓库自动导入,这是因为中央仓库还没有这些依赖。

  • 解决方法有两种,一是将Tars2.0版本所需的依赖自己通过install框架到本地,对于mvn来说package&install后可以正常使用;二是返回到1.7.2版本即可从中央仓库拉取;

2. Docker安装:

Docker相关安装网上在资料与资源已经很足了,这里只提一下笔者遇到的问题。

在Win10上安装Docker需要开启Windows本身的虚拟支持,哭具体操作是:

  • “左下角win图标” - “设置” - “应用和功能” - 最下方“程序和功能” - “启用或关闭Windows功能” - 开启Hyper或相关虚拟功能;
  • 或者直接在Windows搜索框中搜索上述相关关键字进行后续操作;
  • 开启后会要求重启,等待重启即可。





接下来到Docker官网下载Docker即可:Docker For Win

坑点三:Docker的镜像默认安装在C盘

Docker安装无脑一直下一步即可,但它会默认将拉来的镜像保存在C盘(原目录:C:\Users\用户名\AppData\Local\Docker\wsl),我们可以通过wsl -l -v --all命令查看:



docker-desktop用来存放程序,docker-desktop-data用来存放镜像,如果希望它在其他盘,可以参考以下操作(以移动到新目录:D:\program\wsl\为例);

  1. 导出wsl子系统镜像(备份到D:\program\wsl\目录下),生成.tar压缩包:
wsl --export docker-desktop "D:\program\wsl\docker-desktop\docker-desktop.tar"
wsl --export docker-desktop-data "D:\program\wsl\docker-desktop-data\docker-desktop-data.tar"
  1. 删除现有的wsl子系统,原目录下的ext4.vhdx文件会被删除:
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
  1. 重新创建wsl子系统,在新目录下生成ext4.vhdx文件:
wsl --import docker-desktop "D:\program\wsl\docker-desktop" "D:\program\wsl\docker-desktop\docker-desktop.tar" --version 2
wsl --import docker-desktop-data "D:\program\wsl\docker-desktop-data" "D:\program\wsl\docker-desktop-data\docker-desktop-data.tar" --version 2

以上三步就能将wsl子系统转移到D盘下的\program\wsl\目录了,如果想要验证是否成功,可以使用docker随便拉取一个镜像,看看原目录C:\Users\用户名\AppData\Local\Docker\wsl新目录D:\program\wsl在拉取前后的文件大小,若在拉取后原目录大小不变,新目录增大,就成功了。

  • 成功后,新目录下的两个.tar备份文件可以删除了。

3. Tars部署:

使用docker部署Tars,基本上是一键式解决,但这其中也有一些需要注意的点,

1. 先拉取三个镜像(MySQL、Tars框架、Tars结点):

#拉取最新的镜像
docker pull tarscloud/framework:latest
#拉取节点镜像
docker pull tarscloud/tars-node:latest
#拉取数据库镜像
docker pull mysql:5.6

2. 创建虚拟网络:

docker network create -d bridge --subnet=172.25.0.0/16 --gateway=172.25.0.1 tars

3. 启动数据库:

docker run -d \
--net=tars \
-e MYSQL_ROOT_PASSWORD="root@appinside" \
--ip="172.25.0.2" \
--name=tars-mysql \
mysql:5.6

4. 等待30s,数据库启动需要时间:

可以进到docker里查看MySQL的日志信息,如下则启动成功:



5. 启动Tars框架:

docker run -d \
--net=tars \
-e MYSQL_HOST=172.25.0.2 \
-e MYSQL_ROOT_PASSWORD="root@appinside" \
-eREBUILD=false -eSLAVE=false \
-e INET=eth0 \
--ip="172.25.0.4" \
-p 3000-3001:3000-3001 \
tarscloud/framework

6. 等待60s,框架启动需要时间:

可以进到Docker里查看框架的日志信息,如下则启动成功:



7. 启动Tars结点:

启动web请求
docker run -d --net=tars --ip="172.25.0.3" -eWEB_HOST=http://172.25.0.4:3000 tarscloud/tars-node

8. Docker日志如下则成功:



9. 访问http:{"你的主机ip"}:3000,设置登录密码,用户名为admin

若出现如下画面,恭喜你,Tars部署成功!

10. 点击运维管理,按照如下图片进行配置:

需要注意红框的两个名字,服务名为将来打成jar包的文件名,OBJ为接口名。Tars是根据应用.服务名称.OJB来寻址的。

填写完配置信息后,点击获取端口可以自动获取端口,接着点击确认 - 部署,即可完成服务端与客户端的部署。

  • 服务端配置:

  • 客户端配置:

坑点四:Tars框架MySQL密码错误

官方文档的shell命令与笔者上述第五点在MySQL密码上略有不同;

  • 文档上是:-e MYSQL_ROOT_PASSWORD='root@appinside' \
  • 笔者是:-e MYSQL_ROOT_PASSWORD="root@appinside" \

笔者使用官方的语句,发生如下错误导致框架起不来:



猜测是win10与Linux命令语法不同导致,因此将单引号改成双引号,与数据库那里的配置统一。

4. 代码处理:

Tars部署好后就可以上传代码了,可以自己写也可以使用官方examples,这里笔者使用官方examples作为演示。

1. 首先进入TarsJava GitHub官方地址,点进examples:https://github.com/TarsCloud/TarsJava

2. 在这里我们仅关注以下三个SpringBoot文件:

3. Idea打开server文件(服务端)

对于服务端,需要修改的地方只有一处,即:OJB接口名,这里要与上述服务端配置的OJB名对应。然后打包即可。



打包完后修改打包后的文件夹名为服务名



回到Tars平台,选择之前配置好的服务,点击发布管理,选中服务节点,点击“发布选中节点”:



点击上传包,然后选中我们改好名字的服务包文件。



文件上传后会生成一个时间戳选项,选择后发布即可;



当屏幕中显示三个Active时表明服务上传成功。

4. Idea打开client文件(客户端)

客户端包上传与服务端类似,只不过需要修改以下两个地方:

需要注意2.匹配服务名可以从以下地方查看:

选中服务端,点击服务管理,点击管理Servant;



复制红框内的内容,Ctrl CV到代码里即可;

后续步骤就跟服务端一样了,这里就不啰嗦了,这里放上一张客户端成功发布包图。

坑点五:发布包与服务名不匹配

这个问题是没有修改发布包名为服务名,这点在官方GitHub文档上没有提及,可能是新版本特性吧:

  • 将打包名.jar,该为服务名即可:

    (将Server1改成Server,Server1为笔者故意写错做演示用)

坑点六:[alarm] down, server is inactive

笔者在进行部署是经常遇到的这个错误:



这个错误的原因很大概率是因为自己的代码有问题,笔者在这里遇到的问题有:

  • 打包时文档检验出现错误;
  • 没有配置Obj接口;
  • SpringBoot依赖文件找不到等;

这个问题需要认真检查代码。

(这里笔者故意将MyServer.Server.ServerObj改成MyServer.Server.ServerObj1,以演示错误。)

5. 接口调试:

服务包上传进Tars是否成功,可以通过接口调试是否成功判断。

下面以服务端为例,客户端相同:

首先进入接口调试,点击添加;



接着上传.tars文件,该文件在..\src\main\resources目录下,客户端上传hello.tars文件,服务端上传client.tars文件。



上传完后点击调试:

按照下图进行操作即可查看调试结果。


最后

新人制作,如有错误,欢迎指出,感激不尽!
欢迎关注公众号,会分享一些更日常的东西!
如需转载,请标注出处!

Tars | Win10下Docker部署TarsJava(SpringBoot)全过程及踩坑记录的更多相关文章

  1. 在Cent OS云服务器上部署基于TP5后端代码踩坑记录_艾孜尔江撰

    推荐使用镜像安装Cent OS系统,或者在纯净安装完成之后在完成Apache+MySQL+PHP的时候不要每个单独安装,因为这样会出一些三者之间版本不配的问题,网上各种说法都有,查起来也非常困难,版本 ...

  2. windows 下 react-native(v0.56) Android 环境搭建踩坑记录

    debugservicereact-native 安装官网 https://reactnative.cn/docs/getting-started.html 根据官网步骤一步步执行下去.还能碰到一些问 ...

  3. ubuntu 下安装docker 踩坑记录

    ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...

  4. SpringBoot + Shiro + shiro.ini 的踩坑记录

    0.写在前面的话 好久没写博客了,诶,好多时候偷懒直接就抓网上的资料丢笔记里了,也就没有自己提炼,偷懒偷懒.然后最近参加了一个网络课程,要交作业的那种,为了能方便看下其他同学的作业,就写了个爬虫把作业 ...

  5. SpringBoot+SpringSecurity+Thymeleaf认证失败返回错误信息踩坑记录

    Spring boot +Spring Security + Thymeleaf认证失败返回错误信息踩坑记录 步入8102年,现在企业开发追求快速,Springboot以多种优秀特性引领潮流,在众多使 ...

  6. 复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

    从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负责的模块connector就派上了用场. ...

  7. 使用Windows下的git工具往github上传代码 踩坑记录

    使用Windows下的git工具往github上传代码 踩坑记录 背景 由于以前接触的项目都是通过svn进行版本控制,现在公司项目使用git,加上自己平时有一个练手小项目,趁着周末试着把项目上传到自己 ...

  8. Mac下 Docker部署SpringBoot应用

    一.安装Docker环境 使用 Homebrew 安装 macOS 我们可以使用 Homebrew 来安装 Docker. Homebrew 的 Cask 已经支持 Docker for Mac,因此 ...

  9. win10下iis部署asp.net core rtm

    随着ASP.NET Core 1.0 rtm的发布,网上有许多相关.net core 相关文章,今刚好有时间也在win10环境上搭建下 ASP.NET Core的部署环境,把过程记录下给大家. 1. ...

随机推荐

  1. Linux如何查看文件的创建、修改时间?

    Linux如何查看文件的创建.修改时间? 利用stat指令查看文件信息 三种时间的介绍 ATime --文件的最近访问时间 只要读取时间,ATime就会更新 MTime --文件的内容最近修改的时间 ...

  2. STM32F4-IAP学习笔记--(转)

    花了断断续续两天时间在STM32上面写了一个IAP(In Application Programing)Boot,期间多多少少还是遇到的了不少问题.现在就花点时间把这两天写的东西整理一下,就当是学习笔 ...

  3. Lua中的基本函数库--(转自忧郁的加菲猫)

    基本函数库为Lua内置的函数库,不需要额外装载assert (v [, message])功能:相当于C的断言,参数:v:当表达式v为nil或false将触发错误,message:发生错误时返回的信息 ...

  4. jq slideDown后里面的A链接失效(已解决)

    jq slideDown后里面的A链接失效(解决) 用jq 的 slideDown写了一个二级下拉菜单,但是里面的a标签全部失效了,挂的链接右键菜单可以正常打开,但是左键正常点击不行 查阅了很多资料, ...

  5. CSS的起步

    初学CSS CSS语法规范 选择器{样式} 给谁改样式{改什么样式} 写在style标签里 健值对形式,分号结尾 color:red; <style> p { color:red; fon ...

  6. JMeter36个内置函数及11个新增函数介绍

    JMeter内置了36个函数,这些函数可以通过函数助手进行编辑和测试.了解这些函数,不仅能提高JMeter的使用熟练度,也有助于知晓测试工具或测试框架通用的函数有哪些,在自主设计时,作为参考借鉴. J ...

  7. JVM-垃圾收集算法基础

    目录 目录 前言 手动释放内存导致的问题 垃圾判定方法 哪些对象是垃圾? 引用计数算法 可达性分析法 垃圾收集算法 标记-清除 优点 缺点 优化 标记-复制 优点 缺点 优化 标记-整理 优点 缺点 ...

  8. Python+Selenium学习笔记9 - 警告框处理

    如下图所示,这种窗口是不能通过前端工具对其进行定位的,这里可以通过switch_to_alert()方法去接受这个弹窗 1 # coding = utf-8 2 3 from selenium imp ...

  9. Halide应用开发

    Halide应用开发 1. 基本原理 1.1.介绍 随着人工智能的普及,深度学习网络的不断涌现,为了让各硬件(CPU, GPU, NPU,...)能够支持深度学习应用,各硬件芯片需要软件库去支持高性能 ...

  10. VAE变分自编码器实现

    变分自编码器(VAE)组合了神经网络和贝叶斯推理这两种最好的方法,是最酷的神经网络,已经成为无监督学习的流行方法之一. 变分自编码器是一个扭曲的自编码器.同自编码器的传统编码器和解码器网络一起,具有附 ...