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

葡萄城技术团队 葡萄城技术团队     2022-12-19     471

关键词:

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/grapecitycn/wyn-enterprise/tags

基本安装步骤

(1)   Docker部署。

具体可参考https://docs.docker.com/install/linux/docker-ce/ubuntu/

(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=“Postgres|SqlServer|MySql” -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/pages/viewpage.action?pageId=62063422

拓展阅读

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

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

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

bi系统打包docker镜像及容器化部署的具体实现(代码片段)

在过去的几年中,"云"作为明星热词站在了各种新潮技术之中,你可能使用过,但说不清它的原理;或者是没用过,但听过它的大名;也可能连它的名字都没听过,但你对这只蓝色鲸鱼一定十分眼... 查看详情

1docker部署及基础理论(代码片段)

...运行,最重要的是,他们不依赖于如何语言、框架或包括系统。  Docker虚拟化和传统虚拟机(KVM、Xen等)方式的不同之处在于Docker虚拟化可以在操作系统层面上直接实现App或者虚拟化,直接复用本地机器的操作系统,而传统方... 查看详情

docker入门教程:本地打包docker镜像(代码片段)

...是虚拟出一套硬件后,在其上运行的一个完整的操作系统,在该系统上在运行所需应用进程。而Docker不需要捆绑一整套的操作系统,它只需要软件工作所需的库资源和设置。Docker容器是在操作系统层面上实现虚拟化&#x... 查看详情

docker系列:全面认识docker和基本指令

...用到一个轻量级、可移植的容器中,然后发布到主流Linux系统上运行。为什么用Docker持续交付和部署:使用Docker可以通过定制应用镜像来实现持续集成,持续交付,部署。开发人员构建后的镜像,结合持续集成系统进行集成测试... 查看详情

docker系列:全面认识docker和基本指令

...用到一个轻量级、可移植的容器中,然后发布到主流Linux系统上运行。为什么用Docker持续交付和部署:使用Docker可以通过定制应用镜像来实现持续集成,持续交付,部署。开发人员构建后的镜像,结合持续集成系统进行集成测试... 查看详情

docker基本部署及基本控制命令(理论篇)(代码片段)

...分钟级硬盘使用一般为MB一般为GB性能接近原生弱于原生系统支持量单击支持上千个容器一般几十个隔离性完全屏蔽底层相对独立Docker核心概念镜像(Image):类似虚拟机镜像容器(Container):类似linux系统环境,运行和隔离应用... 查看详情

docker基本概念

参考技术A由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。Docker主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿... 查看详情

k8s和docker区别

...器引擎,开发人员可以将其应用打包,发布到流行的liunx系统或实现虚拟化。1.k8s是一种开放源码的容器集群管理系统,可实现自动化部署、扩展容量、维护等容器集群功能。Docker容器有别于传统虚拟化方法,传统的虚拟技术,... 查看详情

操作系统-容器-docker:如何将应用打包成为docker镜像?(代码片段)

ylbtech-操作系统-容器-Docker:如何将应用打包成为Docker镜像? 1.返回顶部1、虽然DockerHub提供了大量的镜像,但是由于企业环境的多样性,并不是每个应用都能在DockerHub找到对应的镜像来使用。那就要求企业的运维人员掌握制... 查看详情

干货docker的安装镜像及容器容器(代码片段)

...个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大地提高了工作效率。作为一种轻量级的虚拟化方式,Docker与传统虚拟机相比具有显著的优势:1)... 查看详情

docker基础理论及安装部署(镜像与容器的基本操作注解)(代码片段)

...器操作一、前言理论概述1.1背景以linux而言,linux操作系统会有一个主进程pid=1派生出其他进程来控制不同服务(例如:python→pid=2,java→pid=3,php→pid=4。三个服务可能会互相影响,而使用者期... 查看详情

docker基础理论及安装部署(镜像与容器的基本操作注解)(代码片段)

...器操作一、前言理论概述1.1背景以linux而言,linux操作系统会有一个主进程pid=1派生出其他进程来控制不同服务(例如:python→pid=2,java→pid=3,php→pid=4。三个服务可能会互相影响,而使用者期... 查看详情

docker

...赖与封闭关系  #Docker项目的目标是实现轻量级的操作系统虚拟化解决方案  #使用Docker部署mysql,tomcat,redis等软件,可以实现软件跨平台应用  #VM就是虚拟化技术  #Docker    #Docker是基于操作系统之上的虚拟化,传... 查看详情

温故知新:docker基础知识知多少(代码片段)

...途,亦或者说Docker到底帮我们解决什么问题?1、标准化打包  记得在容器技术出来之前,我们开发者进行打包一般都依赖于各自开发语言平台独有的打包机制,比如.NET和Java平台下都会依赖于各自不同的发布部署技术,但在容... 查看详情

1.docker的介绍与安装(代码片段)

...)来提供容器的资源隔离与资源限制。由于Docker通过操作系统层的虚拟化实现隔离(对操作系统的内核有要求),所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,从而比kvm虚拟机更轻量。docker是一种软件... 查看详情

docker从入门到放弃(代码片段)

...并遵从Apache2.0协议开源。基于Linux内置的Namespace和CGroup等系统内隔离机制而抽象出来的一种轻虚拟化技术。为什么用Dockerl更快速的交付和部署:对开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行,... 查看详情

docker:什么是docker?

...过来的(因此我们安装Docker要基于虚拟机上运行,Windows系统要安装Hyper-V虚拟机特性)。将应用打包成镜像,通过镜像成为运行在Docker容器上的实例,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台,跨服务器。只... 查看详情

docker部署springboot

...建镜像Dockerfile文件的内容为:在pom中添加docker插件确定系统中已经安装过docker可以输入dockerversion查看docker安装版本确定系统安装过maven环境。可以输入mvn-version查看maven版本信息将springboot项目上传至已经部署好的linux系统中进入s... 查看详情