BI系统打包Docker镜像及部署的技术难度和实现

BI系统打包Docker镜像及部署的技术难度和实现

随着容器化技术盛行,Docker在前端领域也有着越来越广泛的应用;传统的前端部署方式需要我们将项目打包生成一系列的静态文件,然后上传到服务器,配置nginx文件;如果我们使用容器化部署,将部署操作都命令化,集中成一个脚本就可以完成原来复杂的部署过程。本文就来介绍BI系统如何通过Docker方式进行部署。

1.什么是docker容器?

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。

Docker的英文翻译是码头工人,码头工人一般搬运的都是集装箱(Container),集装箱最大的成功在于其产品的标准化以及由此建立的一整套运输体系。在一艘几十万吨的巨轮上,装满了各种各样满载的集装箱,彼此之间不会相互影响;因此其本身就有标准化、集约化的特性。

从Docker的logo我们也能看出,Docker的思想来自于集装箱;各个应用程序相当于不同的集装箱,每个应用程序有着不同的应用环境,比如python开发的应用需要服务器部署一套python的开发环境,nodejs开发的应用需要服务器部署nodejs的环境,不同环境之间有可能还会彼此冲突,Docker可以帮助我们隔离不同的环境。

有些同学于是就想到了,这不是虚拟机干的活么。是的,虚拟机可以很好的帮我们隔离各个环境,我们可以在windows上运行macOS、ubuntu等虚拟机,也可以在macos上安装Windows的虚拟机;不过传统的虚拟机技术是虚拟一整套硬件后,在其上运行完整的操作系统,在该系统上再运行所需应用进程,这样导致一台电脑只能运行数量较少的虚拟机。

但是Docker使用的容器技术比虚拟机更加的轻便和快捷。容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便,下图比较了两者的区别:

对比总结:

特性容器虚拟机
启动秒级分钟级
硬盘使用一般为 MB一般为 GB
系统资源0~5%5~15%
性能接近原生弱于原生
系统支持量单机支持上千个容器一般几十个

2.Docker容器化部署的优势?

  • 启动快、解决虚拟机资源消耗问题

启动容器相当于启动本机一个进程,启动速度快。一台电脑运行一个Linux虚拟机可能会卡顿,却可以使用Docker虚拟几十甚至上百台虚拟Linux服务器,容器仅占用用到的资源,多个容器可共享资源。

  • 体积小、快速部署

开发的应用在自己电脑上运行,换一台机器可能无法运行,需要环境配置。

使用Docker可以将应用程序及依赖包打包在一个文件里,运行这个文件就会启动虚拟服务器。

  • 提供一次性环境

启动或关闭一个虚拟服务器就像启动或关闭一个进程一样简单、快速。

  • 组建微服务架构

通过多个容器,一台机器可以跑很多虚拟服务器,一台机器上可以虚拟出微服务架构,也可以模拟出分布式架构。

3.BI系统如何实现Docker容器化部署

随着容器化技术的普及,越来越多的企业都采用容器化的方式来部署自己的系统,BI系统也随着技术的发展,提供Docker容器化部署方式。为了带大家了解如何实现将BI系统的Docker容器化部署,我们以商业智能软件Wyn为例,为大家展示这个过程。

Wyn在DockerHub上发布了BI系统的镜像,大家可以根据自己的需要拉取对应的版本进行部署。镜像地址:https://hub.docker.com/r/grap...

基本安装步骤

(1)   Docker部署。

具体可参考https://docs.docker.com/insta...

(2)   使用如下命令拉取最新的Docker镜像。

sudo docker pull grapecitycn/wyn-enterprise

(3)  运行如下命令,创建并运行Docker容器。

sudo docker run --name wyn -p 51980:51980 -d grapecitycn/wyn-enterprise

(4)  至此,您已经可以通过 http://{server\_ip\_address}:51980 来访问Wyn Enterprise系统。

Docker目录挂载

如使用内置的数据库,为了防止新建Docker容器后数据丢失,可将容器中的数据目录挂载到宿主机上。

如需挂载目录,请使用如下命令替换基本安装步骤中第三步的命令创建并运行Docker容器。

sudo docker run --name wyn -p 51980:51980 -h "{host\_name}" -v /tmp/wyn\_data:/var/lib/postgresql/data -d grapecitycn/wyn-enterprise

命令中 -v /tmp/wyn\_data:/var/lib/postgresql/data为挂载操作,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。

使用自定义数据库

Wyn Enterprise系统默认将数据存放在内置数据库中,你还可以使用其他数据库,支持Postgres、SqlServer、MySql和Oracle四种数据库类型。

如果您需要使用其他的数据库,请使用如下命令替换基本安装步骤中第三步的命令创建并运行Docker容器。

  • Postgres/SqlServer/MySql数据库:
sudo docker run --name wyn -p 51980:51980 -h "{host\_name}" -e DB\_PROVIDER="{PostgresSqlServerMySql}" -e DB\_HOST="{database\_server\_address}" -e DB\_PORT=database\_listening\_port -e DB\_USER="{database\_user}" -e DB\_PASSWORD="{database\_user\_password}" -d grapecitycn/wyn-enterprise
  • Oracle数据库:
sudo docker run --name wyn -p 51980:51980 -h "{host\_name}" -e DB\_PROVIDER="Oracle" -e DB\_HOST="{database\_server\_address}" -e DB\_PORT=database\_listening\_port -e DB\_USER="{database\_user}" -e DB\_PASSWORD="{database\_user\_password}" -e ORACLE\_SERVICE\_NAME="{service\_name\_only\_for\_oracle\_provider}" -d grapecitycn/wyn-enterprise

请注意按实际情况更换命令行中的配置信息。

  • 示例:
sudo docker run --name wyn -p 51980:51980 -h "wyn1" -e DB\_PROVIDER="SqlServer" -e DB\_HOST="gcs-testing-01" -e DB\_PORT=1433 -e DB\_USER="sa" -e DB\_PASSWORD="aa123456" -d grapecitycn/wyn-enterprise

注意

配置为系统数据库时对数据库的版本要求如下:
SQL Server须为2012及以上版本;Oracle须为12c R2及以上版本;MySQL须为5.6及以上版本(且数据库的字符集必须配置为UTF-8);PostgreSQL须为8.4及以上版本。

另外,如需使用MySql数据库,请留意数据库中是否限制了插入和更新数据的数据包大小,此大小需设置为不小于300M。

卸载

(1)  运行如下命令停止Docker 容器运行。

sudo docker stop wyn

(2)  删除Docker容器。

sudo docker rm wyn

到这里我们就完全实现了BI系统打包Docker并完成部署。

更多相关内容大家可以查看:

https://help.grapecity.com.cn...

拓展阅读

实现同比、环比计算的N种姿势

从天猫数据大屏出发,带你看看实时数据可视化究竟是怎么实现的

用好 DIV 和 API,在前端系统中轻松嵌入数据分析模块


葡萄城技术团队
葡萄城技术团队,分享技术文章。

葡萄城创建于1980年,是全球领先的软件开发技术和低代码平台提供商。以“赋能开发者”为使命,葡萄城致力...

2.5k 声望
20.3k 粉丝
0 条评论
推荐阅读
BI工具术语表大全:从字母A-Z全面收录
谈到商业智能行业,变革是不可避免的。为了跟上步伐,各种各样的BI 解决方案正在快速迭代更新,以满足企业的数字化需求,那么市场上BI 工具种类繁杂,到底如何选择适合功能全面、满足自己企业运转情况的、合适的B...

葡萄城技术团队阅读 326

手把手教你写一份优质的前端技术简历
不知不觉一年一度的秋招又来了,你收获了哪些大厂的面试邀约,又拿了多少offer呢?你身边是不是有挺多人技术比你差,但是却拿到了很多大厂的offer呢?其实,要想面试拿offer,首先要过得了简历那一关。如果一份简...

tonychen152阅读 17.7k评论 5

封面图
正则表达式实例
收集在业务中经常使用的正则表达式实例,方便以后进行查找,减少工作量。常用正则表达式实例1. 校验基本日期格式 {代码...} {代码...} 2. 校验密码强度密码的强度必须是包含大小写字母和数字的组合,不能使用特殊...

寒青56阅读 8.4k评论 11

JavaScript有用的代码片段和trick
平时工作过程中可以用到的实用代码集棉。判断对象否为空 {代码...} 浮点数取整 {代码...} 注意:前三种方法只适用于32个位整数,对于负数的处理上和Math.floor是不同的。 {代码...} 生成6位数字验证码 {代码...} ...

jenemy48阅读 6.9k评论 12

从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...

乌柏木75阅读 7k评论 16

再也不学AJAX了!(二)使用AJAX ① XMLHttpRequest
「再也不学 AJAX 了」是一个以 AJAX 为主题的系列文章,希望读者通过阅读本系列文章,能够对 AJAX 技术有更加深入的认识和理解,从此能够再也不用专门学习 AJAX。本篇文章为该系列的第二篇,最近更新于 2023 年 1...

libinfs42阅读 6.8k评论 12

封面图
从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...

乌柏木45阅读 8.5k评论 6

葡萄城创建于1980年,是全球领先的软件开发技术和低代码平台提供商。以“赋能开发者”为使命,葡萄城致力...

2.5k 声望
20.3k 粉丝
宣传栏