BI 系统打包 Docker 镜像及部署的技术难度和实现
随着容器化技术盛行,Docker 在前端领域也有着越来越广泛的应用;传统的前端部署方式需要我们将项目打包生成一系列的静态文件,然后上传到服务器,配置 nginx 文件;如果我们使用容器化部署,将部署操作都命令化,集中成一个脚本就可以完成原来复杂的部署过程。本文就来介绍 BI 系统如何通过 Docker 方式进行部署。
Docker 是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
Docker 的英文翻译是码头工人,码头工人一般搬运的都是集装箱( Container ),集装箱最大的成功在于其产品的标准化以及由此建立的一整套运输体系。在一艘几十万吨的巨轮上,装满了各种各样满载的集装箱,彼此之间不会相互影响;因此其本身就有标准化、集约化的特性。
从 Docker 的 logo 我们也能看出,Docker 的思想来自于集装箱;各个应用程序相当于不同的集装箱,每个应用程序有着不同的应用环境,比如 python 开发的应用需要服务器部署一套 python 的开发环境,nodejs 开发的应用需要服务器部署 nodejs 的环境,不同环境之间有可能还会彼此冲突,Docker 可以帮助我们隔离不同的环境。
有些同学于是就想到了,这不是虚拟机干的活么。是的,虚拟机可以很好的帮我们隔离各个环境,我们可以在 windows 上运行 macOS 、ubuntu 等虚拟机,也可以在 macos 上安装 Windows 的虚拟机;不过传统的虚拟机技术是虚拟一整套硬件后,在其上运行完整的操作系统,在该系统上再运行所需应用进程,这样导致一台电脑只能运行数量较少的虚拟机。
但是 Docker 使用的容器技术比虚拟机更加的轻便和快捷。容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便,下图比较了两者的区别:
对比总结:
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB | 一般为 GB |
系统资源 | 0~5% | 5~15% |
性能 | 接近原生 | 弱于原生 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
启动容器相当于启动本机一个进程,启动速度快。一台电脑运行一个 Linux 虚拟机可能会卡顿,却可以使用 Docker 虚拟几十甚至上百台虚拟 Linux 服务器,容器仅占用用到的资源,多个容器可共享资源。
开发的应用在自己电脑上运行,换一台机器可能无法运行,需要环境配置。
使用 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 容器。
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 容器。
|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| | :- |
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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.