SuperMap iObjects Docker打包全攻略

这篇具有很好参考价值的文章主要介绍了SuperMap iObjects Docker打包全攻略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SuperMap iObjects Docker打包全攻略

说明

  1. 此教程编写时使用的iObjects版本为 10.2.1 ,理论高版本同样支持,具体自测。
  2. 基础镜像为 Docker 官方 ubuntu:16.04完整版。(想换alpine自己折腾)
  3. 不同CPU架构都需要重新打包Dockerfile以安装相关LIB库(本教程以x64为例)
  4. 容器内部默认使用超图iObjects完整包内自带的JRE(10.2.1是1.8),因此如果由高版本JRE需求的请自己研究。
  5. 切记构建容器时,使用的是超图官方下载的iObjects完整包
  6. 构建后的容器默认以 Spring Boot 分离式打包启动,有需要的话参考这里。
  7. 容器构建中使用了多段构建模式,为了减少ADD层3个G的超图包大小,因此部分指令略显冗余。
  8. 在打包时排除$SUPERMAP/Bin,以减少镜像体积,后续通过目录映射提供。
  9. 此教程最终打包后的容器大小在 600M,算是可接受范围。

PS:超图的iObjects依赖坑挺多的!

开始打包iObjects容器

1)准备Docker环境,版本务必 > 17.05;超图 iObjects 版本 > 10.2.1。

Docker下载:https://www.docker.com/products/docker-desktop

iObjects下载:http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx

切记不要只下载Bin包!要下的完整包也就是绿色版!根据实际的CPU架构下载!

SuperMap iObjects Docker打包全攻略

2)随便创个文件夹,在里面丢入:1、iObjects完整包 2、Dockerfile

目录内容如下:

SuperMap iObjects Docker打包全攻略

Dockerfile配置如下:

# 超图容器依赖打包 Dockerfile(支持x64、arm)
# 临时镜像,用于去掉ADD的大文件层(超图包3个G),最后只保留最终镜像
FROM ubuntu:16.04 AS TMP_IMAGE
MAINTAINER Yoko

# 超图目录&JRE
ENV SUPERMAP /supermap
ENV SUPERMAP_TMP $SUPERMAP/tmp
ENV SUPERMAP_SUPPORT $SUPERMAP/Support
ENV SUPERMAP_BIN $SUPERMAP/Bin
ENV SUPERMAP_JRE $SUPERMAP/jre
# 超图依赖(完整包),需要不同架构的去下载不同的包即可:http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx
ADD supermap-iobjectsjava-10.2.1-20428-92245-linux64-all.tar.gz $SUPERMAP_TMP
RUN mv $SUPERMAP_TMP/jre* $SUPERMAP_JRE && mv $SUPERMAP_TMP/Support $SUPERMAP_SUPPORT
# RUN mv $SUPERMAP_TMP/Bin $SUPERMAP_BIN # 是否需要Bin内嵌看自己
RUN tar -xvf $SUPERMAP_SUPPORT/aksusbd* -C $SUPERMAP_SUPPORT --strip-components=1
RUN rm -rf $SUPERMAP_TMP && rm -rf $SUPERMAP_SUPPORT/*.tar

# 多端构建模式,去除大文件依赖,也可以使用 docker build -t municipal-app-supermap . --squash 但需要开启docker的experimental功能
FROM ubuntu:16.04
WORKDIR /
ENV SUPERMAP /supermap
ENV SUPERMAP_TMP $SUPERMAP/tmp
ENV SUPERMAP_SUPPORT $SUPERMAP/Support
ENV SUPERMAP_BIN $SUPERMAP/Bin
ENV SUPERMAP_JRE $SUPERMAP/jre
ENV JAVA_HOME $SUPERMAP_JRE

# 直接复制临时镜像内部文件
COPY --from=TMP_IMAGE $SUPERMAP $SUPERMAP

# 更换阿里源,依次安装相关依赖库(超图包缺失的)
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
    && sed -i s@/security.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
    && apt-get clean && apt-get update \
    && apt-get install -y libgomp1 \
    && apt-get install -y libx11-dev \
    && apt-get install -y libxext-dev \
    && apt-get install -y libxrender-dev \
    && apt-get install -y libxtst-dev \
    && apt-get install -y libxinerama-dev \
    && apt-get install -y libxrandr-dev \
    && apt-get install -y tzdata \
    && apt-get autoclean \
    && apt-get autoremove -y \
    && rm -rf /var/cache/apt/* \
    && rm -rf /var/lib/apt/lists/*

# 时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
# 文件目录
RUN mkdir -p /opt/upFiles && mkdir -p /opt/webapp

# 设置字符集(防止应用日志乱码)
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
# 动态链接库
ENV LD_LIBRARY_PATH $SUPERMAP_BIN:$LD_LIBRARY_PATH
# 环境变量,超图的必须在最前面
ENV PATH $SUPERMAP_BIN:$JAVA_HOME/bin:$PATH
# 应用目录
ENV APP /app
# 应用入口
ENV APP_NAME=main.jar
# 依赖文件夹,设置为空时,不以配置分离式启动
ENV APP_LIB_PATH=lib APP_CONFIG_PATH=config
# 配置启用配置文件
ENV APP_PROFILE_ACTIVE=prod APP_PORT=8888
# 特殊JVM参数
ENV APP_JVM_OPTION="-Djava.security.egd=file:/dev/./urandom -Xms2048m -Xmx2048m"

# 暴露端口
EXPOSE $APP_PORT/tcp
# 应用-入口文件夹(必须)
VOLUME $APP
# 超图-依赖目录(必须)
VOLUME $SUPERMAP_BIN
# 超图-证书目录(必须)
VOLUME /opt/SuperMap/License
# 应用-本地文件上传目录(建议)
VOLUME /opt/upFiles
# 应用-本地webapp目录(可选)
VOLUME /opt/webapp

CMD echo "环境变量: ${PATH}" \
    && echo "加载驱动: $SUPERMAP_SUPPORT" && cd $SUPERMAP_SUPPORT && ./dinst \
    && echo "启动app: $APP" && cd $APP && ls . -al \
    && if [ -n "$APP_LIB_PATH" ] && [ -n "$APP_CONFIG_PATH" ]; then \
           java $APP_JVM_OPTION \
                     -Dloader.path=$APP_LIB_PATH,$APP_CONFIG_PATH \
                     -Dspring.profiles.active=$APP_PROFILE_ACTIVE \
                     -Dserver.port=$APP_PORT \
                     -jar $APP_NAME; \
       else \
           java $APP_JVM_OPTION \
                    -Dspring.profiles.active=$APP_PROFILE_ACTIVE \
                    -Dserver.port=$APP_PORT \
                    -jar $APP_NAME; \
       fi

3)打开powershell/shell执行构建,不出意外的话应该不会出意外,等待结束就行了。

# 构建镜像
docker build -t app-supermap .
# 导出镜像
docker save -o ./app-supermap app-supermap
# 载入镜像
docker load -i app-supermap

启动容器

0)启动参数说明

Docker启动参数(必需) 说明
-v APP应用目录:/app 映射APP目录
-v 超图/Bin:/supermap/Bin 超图iObjects的Bin依赖
-v 超图证书目录:/opt/SuperMap/License 超图的证书
-p 8888:8888 映射的端口
-v 文件上传目录:/opt/upFiles APP本地文件的保存路径
Docker启动参数(可选)
-e APP_NAME=main.jar APP的入口jar,默认为main.jar
-e APP_LIB_PATH=lib APP所需的依赖目录,默认为jar包同级目录下的 lib 目录,留空则以不分离模式启动
-e APP_CONFIG_PATH=config APP所需的配置目录,默认为jar包同级目录下的 config 目录
-e APP_PROFILE_ACTIVE=prod APP启动时加载的配置文件,默认prod
-e APP_PORT=8888 APP启动端口,默认8888
-e APP_JVM_OPTION=“” APP启动时附带的额外JVM参数

1)必须要申请超图的证书:https://www.supermapol.com/web/pricing/triallicense

申请完如下:

SuperMap iObjects Docker打包全攻略

注:Windows系统上的许可证得放在这个目录下 C:\Program Files\Common Files\SuperMap\License ,可以参考超图博客

2)启动示例

APP目录结构长这样:

SuperMap iObjects Docker打包全攻略

对应的启动参数长这样:

docker run -di \
    -p 8888:8888 \
    -v /home/app:/app \
    -v /home/upFiles:/opt/upFiles \
    -v /home/supermap/Bin:/supermap/Bin \
    -v /opt/SuperMap/License:/opt/SuperMap/License 
    --restart=unless-stopped \
    --name app app-supermap

如果是未分离打包的JAR,把APP_LIB_PATH或者APP_CONFIG_PATH置空:

docker run -di \
    -p 8888:8888 \
    -v /home/app:/app \
    -v /home/upFiles:/opt/upFiles \
    -v /home/supermap/Bin:/supermap/Bin \
    -v /opt/SuperMap/License:/opt/SuperMap/License \
    -e APP_LIB_PATH="" \
    --restart=unless-stopped \
    --name app app-supermap

参考

1)ChatGPT

2)https://www.zhihu.com/question/325416061文章来源地址https://www.toymoban.com/news/detail-430777.html

到了这里,关于SuperMap iObjects Docker打包全攻略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Github搭建个人博客全攻略

    Github是开发者的代码仓库,一个开源和分享社区。 本文前提是已注册github账号。 假设用户名为MyName 进入个人主页(https://github.com/用户名),选择Repositories,点击New Repository name填入MyName.github.io,即MyName/ MyName.github.io ,点击Create Repository 安装Git或TortoiseGit(后者添加环境变量)

    2024年02月16日
    浏览(31)
  • 谷歌账号注册流程全攻略

    谷歌账号注册流程全攻略

    一、访问谷歌账号注册页面 首先,你需要访问谷歌账号注册页面。你可以直接点击此链接,或者在谷歌首页点击右上角的“登录”按钮,在弹出的登录框中点击“创建帐号”。 在注册页面,你需要填写以下个人信息: 名字:输入你的名字。 姓氏:输入你的姓氏。 用户名:

    2024年02月05日
    浏览(11)
  • Jenkins 插件安装方式全攻略

    Jenkins 插件安装方式全攻略

    在Jenkins 的安装向导页面中, 会有一步是否安装推荐的插件, 可以直接进行安装, 也可以跳过。 对于安装机器联网的状况, 安装插件相对方便,直接搜索插件安装, 但是也可能会出现无法在线安装的状况, 原因解析及解决方法 参考: Jenkins 在Windows下插件无法安装问题解

    2023年04月21日
    浏览(12)
  • 新手搭建服装小程序全攻略

    新手搭建服装小程序全攻略

    随着互联网的快速发展,线上购物已经成为了人们日常生活中不可或缺的一部分。服装作为人们日常消费的重要品类,线上化趋势也日益明显。本文将详细介绍如何从零开始搭建一个服装小程序商城,从入门到精通的捷径,帮助你快速掌握小程序商城的制作方法和技巧。 首先

    2024年02月21日
    浏览(12)
  • 开发巴西市场全攻略,外贸人收藏

    开发巴西市场全攻略,外贸人收藏

    巴西联邦共和国位于南美洲东部,是南美洲资源最丰富,经济活力和经济实力最强的国家。巴西作为拉丁美洲的出口大国,一直是一个比较有潜力的市场,亦是我国外贸公司和独立外贸人集群的地方。 2021年巴西贸易概况 ✦ 1、2021年巴西贸易创纪录 2021年,巴西的对外贸易以

    2024年02月05日
    浏览(8)
  • TortoiseSVN源码安装与迁移全攻略

    TortoiseSVN源码安装与迁移全攻略

    一、前言 随着版本控制系统的普及,越来越多的开发者和团队开始使用SVN(Subversion)来管理代码。本文将详细介绍TortoiseSVN的源码安装及迁移过程,帮助您轻松掌握这一版本控制工具。 二、TortoiseSVN源码安装 依赖环境安装,apr、apr-util、zlib、sqlite apr 环境   apr-util 环境 zl

    2024年01月24日
    浏览(37)
  • kaggle免费服务器全攻略

    kaggle免费服务器全攻略

    1. kaggle服务器16G显卡一周40小时. 所以我们直接干一堆谷歌账号即可 2. 谷歌账号的注册: 我们需要FQcolab for windows可以做到. 然后我们注册好账号后.我们注册4个账号. 注册方法. 打开chrome   点最下面的添加按钮.然后一直下一步即可.无脑注册. 3.  为Chrome多账户添加单独的快捷方

    2024年02月16日
    浏览(13)
  • 前端使用Cesium加载三维模型全攻略

    想象一下,地球在你眼前旋转,上面还有各种3D模型,是不是很酷?Cesium是一个超酷的库,专门用来创建超炫的3D地球和地图。好,言归正传,今天这篇文章就分享一下前端如何使用Cesium加载三维模型。 首先,确保你已经安装了Cesium库。可以从Cesium官网下载最新版本的库文件

    2024年04月17日
    浏览(45)
  • HTML编写渐变色动画登录页面全攻略

    想要打造炫酷的登录页面吗?那么必须要学会如何用HTML编写渐变色动画效果。本文将为你详细介绍HTML渐变色动画的原理、示例代码以及调试技巧,让你轻松掌握这项必备技能。 渐变色动画原理 渐变色动画是指在网页中使用渐变色呈现动态效果,通常用于按钮、背景等元素上

    2024年02月07日
    浏览(7)
  • 可视化大屏:mapbox+vue全攻略

    可视化大屏:mapbox+vue全攻略

    如题图,mapbox是一个支持真3D地形展示的webGIS框架,与常用的Leaflet、Cesium和Openlayers并称四大框架,本文将介绍mapbox-gl js 在 vue 中的用法。 各位可以自行搜索上面提到的或者其他的webGIS框架或者集成服务商,可以很轻松的比较出mapbox的优势: 支持3D地形、3D模型 支持多种坐标

    2023年04月24日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包