[原]Docker部署SuperMap8.1.1
摘要:本文主要实践在Docker上制作SuperMap(超图)V8.1.1镜像,文中将使用 docker commit 方式创新镜像(Dockerfile择机再做)。本文中使用的宿主环境及镜像环境都是CentOS7.2.1511
(为啥是SuperMap呢?因为我们公司的项目全是用超图滴)
本机上的现状

1. 创建新容器,此处新建的容器ID前四位是18f6
docker run -it centos7.2.1511

2. 复制jre,tomcat部署包到容器中
docker cp server-jre-8u121-linux-x64.tar.gz 18f6:/tmp docker cp apache-tomcat-8.5.11.tar.gz 18f6:/tmp
请在超图网站自行下载,本文使用war包

下载好后在宿主机中将文件解压好 unzip supermap_iserver_8.1.1a_war.zip

将3个war文件和 support_linux_x64.tar.gz 复制到容器中
docker cp iserver#help.war 18f6:/tmp docker cp iserver#iClient.war 18f6:/tmp docker cp iserver.war 18f6:/tmp docker cp support_linux_x64.tar.gz 18f6:/tmp
3. 启动容器,使用 -ia 参数,可以向容器附加输入输出,通俗点来说就是有能开启容器的终端
docker start -ia 18f6
可以看到相当于进入到容器内部,看到了上一步中复制进去的jre、tomcat的部署包

4. 部署jre
mkdir -p /usr/local/java mv /tmp/server-jre-8u121-linux-x64.tar.gz /usr/local/java tar -xzvf /usr/local/java/server-jre-8u121-linux-x64.tar.gz -C /usr/local/java rm /usr/local/java/server-jre-8u121-linux.x64.tar.gz -f
使用 vi /etc/profile 设置java环境变量,在 /etc/profile 最下面添加以下环境变量
export JAVA_HOME=/usr/local/java/jdk1.8.0_121
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin
使用 source /etc/profile 使环境变量生效,验证jre部署

5. 部署tomcat
mkdir -p /usr/local/tomcat mv /tmp/apache-tomcat-8.5.11.tar.gz /usr/local/tomcat tar -xzvf /usr/local/tomcat/apache-tomcat-8.5.11.tar.gz -C /usr/local/tomcat rm /usr/local/tomcat/apache-tomcat-8.5.11.tar.gz -f
使用 vi /etc/profile 设置tomcat环境变量,在 /etc/profile 最下面添加以下环境变量
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.11 export CATALINA_BASE=/usr/local/tomcat/apache-tomcat-8.5.11 export PATH=$PATH:$CATALINA_BASE/bin
使用 source /etc/profile 使环境变量生效,启动tomcat, $CATALINA_BASE/bin/startup.sh
使用 curl -I 验证tomcat,看到200状态码说明tomcat已经开始工作了。

6. 部署超图
先创建 supermap 目录 mkdir -p /home/supermap
解压超图文件包 tar -xzvf support_linux_x64.tar.gz --strip-components 1 -C /home/supermap
安装Supermap依赖项( /home/supermap/dependencies_check_and_install.sh 是超图提供的默认安装依赖项的脚本,而且并不能在CentOS7.2.1511上正确运行,因此这里只能手动安装了)
yum install gcc gcc-c++ libX11 zlib glibc libpng libgomp libXau libXdmcp libXext libXtst libXi -y
安装SuperMap License的依赖项
yum install libstdc++-devel.i686 glibc.i686 libgcc.i686 libstdc++.i686 glibc-devel.i686 -y
将超图的war包全放到 $CATALINA_BASE/webapps ,即tomcat中
cp /tmp/iserver*.war $CATALINA_BASE/webapps
使用 vi /etc/profile 设置超图环境变量,在 /etc/profile 最下面添加以下环境变量
export SUPERMAP_ROOT=/home/supermap
export UGO_HOME=$SUPERMAP_ROOT/objectsjava/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$UGO_HOME
7. 创建开机运行文件 vi /run.sh ,输入以下内容
#!/bin/bash cd /home/supermap/SuperMap_License/Support
tar xvf aksusbd-2.4.1-i386.tar
cd aksusbd-2.4.1-i386
./dunst
./dinst
source /etc/profile sh $CATALINA_BASE/bin/catalina.sh run

8. 退出容器
exit
9. 创建新的超图镜像
docker commit 18f6 centos:supermap

10. 创新新的超图容器
docker run -p 8080:8080 -d --name think8848_supermap centos:supermap /run.sh
使用 docker ps 可以看到容器5802已经在后面运行了

在宿主机上开启防火墙端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload
11. 尝试访问超图,打开浏览器,输入 http://hostip:8080/iserver , 就可以看 到下面的画面了


进入超图了

超图服务管理页面

附:关于超图的一点小经验
1. 在使用超图的过程中,我和同事都发生过一个问题,时间久了后,超图服务的管理员密码不知道了,不要急着重装,还有个办法可以解决,点击这里,下载密码重启脚本。
非Docker环境下:将passwordreset.zip解压,得到passwordreset.sh,将这个文件放到tomcat的bin目录下,然后给该文件执行权限,并执行之。
Docker环境下:先进入容器,将passwordreset.sh放到 $CATALINA_BASE/bin 目录下,然后打开 vi /run.sh 文件,在 sh $CATALINA_BASE/bin/catalina.sh run 之上添加 sh $CATALINA_BASE/bin/passwordreset.sh run 脚本,然后退出容器,使用 docker restart 5802 重新容器,再次打开超图服务管理器,就能重置密码了。然而在重置密码之后,又需要更新一次临时授权。记得最后把run.sh中的重置密码行删掉,不然下次开启又自动重置密码了。
2. 在Linux下部署超图, 如果需要用 systemctl enable tomcat 自动启动tomcat,那么需要在 /usr/lib/systemd/system/tomcat.service 进行如下配置,否则iserver无法启动
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target [Service]
Environment=JAVA_HOME=/usr/local/java/jdk1.8.0_121
Environment=JRE_HOME=/usr/local/java/jdk1.8.0_121/jre
Environment=CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.11
Environment=CATALINA_BASE=/usr/local/tomcat/apache-tomcat-8.5.11
Environment=SUPERMAP_ROOT=/home/supermap
Environment=UGO_HOME=/home/supermap/objectsjava/bin
Environment=LD_LIBRARY_PATH=/home/supermap/objectsjava/bin Type=forking
PIDFile=/usr/local/tomcat/apache-tomcat-8.5.11/tomcat.pid
ExecStart=/usr/local/tomcat/apache-tomcat-8.5.11/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true [Install]
WantedBy=multi-user.target
[原]Docker部署SuperMap8.1.1的更多相关文章
- AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排
一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...
- 【转载】如何使用docker部署c/c++程序
原文地址:https://blog.csdn.net/len_yue_mo_fu/article/details/80189035 Docker介绍 Docker是一个开源的容器引擎,它有助于更快地交 ...
- 笔记14:Docker 部署Python项目
Docker 部署Python项目 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取 ...
- 使用Docker部署Spring-Boot+Vue博客系统
在今年年初的时候,完成了自己的个Fame博客系统的实现,当时也做了一篇博文Spring-boot+Vue = Fame 写blog的一次小结作为记录和介绍.从完成实现到现在,也断断续续的根据实际的使用 ...
- 从零实操基于WSL2 Docker部署Asp.Net Core项目
前言 平日在公司里都是基于阿里Teambition中的飞流进行Docker部署Api项目或服务,已经习惯了那一套成熟的操作流程,开发和部署确实快捷方便,但是还没在自己的电脑上进行操作过,特别是Wind ...
- Tars | Win10下Docker部署TarsJava(SpringBoot)全过程及踩坑记录
@ 目录 前言 1. 相关环境版本: 坑点一:VMware与Win10 Docker冲突 坑点二:20.版本TarsJava(SpringBoot)依赖文件缺失 2. Docker安装: 坑点三:Do ...
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
- Docker部署Hadoop集群
Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...
- 程序开发使用docker部署
我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...
随机推荐
- 第3章 Java数组(上): 一维数组和二维数组
3.数组及排序算法(2天) 3.1 数组的概述 2课时 3.2 一维数组的使用 3课时 3.3 多维数组的使用 3课时 3.4 数组中涉及到的常见算法 3课时 3.5 Arrays工具类的使用 3课时 ...
- JDK 8 安装及配置
1.配置java环境变量 注意:jdk文件夹名字取名不要用汉语取名. 1)鼠标右键点击我的电脑(计算机)选择属性栏 2)再点击左边高级系统设置 3)点击环境变量 4)在用户变量窗口新建变量名为JAVA ...
- jQuery基础(三)事件
1.鼠标事件 jQuery鼠标事件之click与dblclick事件 click方法用于监听用户单击操作,dbclick方法用于监听用户双击操作. 方法一:$ele.click() 绑定$ele元素, ...
- Jenkins入门-环境搭建(1)
因为Jenkins的环境搭建比较简单,本来不想来介绍,但是发现有些入门小朋友,从各种网站上下载的各种安装包来搭建,最后导致出现了各种千奇百怪的问题,介于这种情况下我决定还是来写一下Jenkins的环境 ...
- mnist全连接层网络权值可视化
一.数据准备 网络结构:lenet_lr.prototxt 训练好的模型:lenet_lr_iter_10000.caffemodel 下载地址:链接:https://pan.baidu.com/s/ ...
- NodeJS入门教学
http://v.baidu.com/v?word=Node.JS+%2B+MongoDB&ct=301989888&rn=27&pn=0&db=0&s=0&a ...
- Substring方法(C#,JS,Java,SQL)的区别
C#: substring(第一参数,第二参数)// 第一参数:从第几位开始截,初始是从0位开始 第二参数:截取几位 substring(参数) 如果传入参数为一个长整, 且大于等于0,则以这个 ...
- 01-简单编写http服务器
package com.day3; import java.io.IOException; import java.io.InputStream; import java.net.ServerSock ...
- Vue 目录结构 绑定数据 绑定属性 循环渲染数据
一.目录结构分析 node_modules 项目所需要的各种依赖 src 开发用的资源 assets 静态资源文件 App.vue 根组件 main.js 配置路由时会用 .babelrc 配置文件 ...
- FragmentTabHost切换Fragment时保存状态,避免切换Fragment走onCreateView和onDestroyView方法;
FragmentTabHost这个控件每次切换Fragment,都会走Fragment的onCreateView和onDestroyView方法,多以每次切换都会创建和销毁Fragment实例,先来看 ...