使用SuperMap iServer 11i官方镜像生成自己的iObjectsJava微服务容器

由于iServer和iObjectsJava需要依赖许多第三方软件才能在linux环境下运行。官方给出过如何在Linux环境下安装iServer11i的教程。在正常的Linux版本下安装一般是没有问题的。但如果想在Docker的容器中安装iServer11i,很多时候都无法成功。原因是使用的容器是精简版的,缺少很多必要的依赖软件。

本文将给大家介绍如何使用SuperMap官方提供的iServer11的镜像来制作自己的GIS微服务容器。

一、 下载官方iServer11镜像

docker pull supermap/iserver:latest

二、 拷贝所需版本的iObjectsJava到容器中

可以通过在启动容器的命令中增加-v参数来将特定版本的iObjectsJava映射到容器中:

docker run -itd -p 8090:8090 -p 9601:9601 -v D:\supermap:/supermap-v D:\licenses:/opt/supermap/license/ -v D:\Datas:/datas --hostname giserver11--name gisserver11 44f596fa97db

说明:

上述命令中,将本机的D:\supermap目录映射到了容器内的/supermap目录。为了方便单独采用绿色版的方式启动,最好把jre也映射到容器的/supermap/support目录下。

本文使用的是Windows10下安装的DockerDesktop软件启动的容器,所以原始文件夹为windows的路径。如果在Linux下安装的Docker,请更改为Linux宿主机的路径。

也可以通过拷贝的方式将特定版本的iObjectsJava拷贝到容器中:

docker cp D:\supermap <容器ID>:/supermap/support

注意:

上述操作执行完毕之后还需要手动将objectsjava/systemlibs下的所有文件拷贝到objectsjava/bin下,否则后续在启动微服务后访问服务时会提示找不到依赖的库文件:

如果自备的iObjectsJava是精简版,没有systemlibs这个文件夹,就从容器里自带的iServer/support/objectsjava下去找:

并将systemlibs文件夹拷贝到自备的iObjectsJava目录下(与bin目录同级):

三、 映射或拷贝微服务程序

上述操作执行完毕后,需要将微服务jar包和相关文件拷贝或映射到容器里。拷贝后的文件夹结构如下:

说明:

上述图片中每个子文件夹为一个GIS微服务。

四、 创建support软连接

如果需要在容器中同时部署和运行多个微服务,就需要在每个微服务文件夹中分别部署一个support文件夹(主要是iObjectsJava),这样不仅操作不方便,还会导致容器尺寸暴增。所以可以通过如下命令在每个微服务文件夹中生成一个support的软连接:

执行完上述命令后,每个微服务文件夹将会出现support软连接:

五、 编写微服务启动脚本

#!/bin/sh
this_dir=`pwd`
dirname$0|grep "^/" >/dev/null
if [ $?-eq 0 ];then
this_dir=`dirname$0`
else
dirname$0|grep "^\." >/dev/null
retval=$?
if [$retval -eq 0 ];then
this_dir=`dirname$0|sed "s#^.#$this_dir#"`
else
this_dir=`dirname$0|sed "s#^#$this_dir/#"`
fi
fi
echo$this_dir
export JRE_HOME=$this_dir/support/jre
exportLD_LIBRARY_PATH=$this_dir/support/objectsjava/bin:$LD_LIBRARY_PATH
exportPATH=$this_dir/support/objectsjava/bin:$this_dir/support/objectsjava/systemlibs:$JRE_HOME/bin:$PATH
exportCLASSPATH=.:$this_dir/support/objectsjava/bin:$this_dir/support/objectsjava/systemlibs:$JRE_HOME/lib:$JRE_HOME/lib/tools.jar
java -jar-Djava.ext.dirs=$this_dir/support/objectsjava/bin:$this_dir/support/objectsjava/systemlibs  ./api.jar &

说明:

上述sh脚本中,需要根据自己准备的objectsjava的文件夹名称替换一下17~20行中对应位置的路径名,再替换一下第20行启动的jar包文件名即可。并将脚本保存为*.sh文件(如“startapi.sh”)。

六、 启动微服务

上述操作全部执行完毕之后,就可以通过运行*.sh文件启动微服务了:

此时在浏览器中请求微服务,即可正常返回结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值