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/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
拓展阅读
BI系统打包Docker镜像及部署的技术难度和实现的更多相关文章
- BI系统打包Docker镜像及容器化部署的具体实现
在过去的几年中,"云"作为明星热词站在了各种新潮技术之中,你可能使用过,但说不清它的原理:或者是没用过,但听过它的大名:也可能连它的名字都没听过,但你对这只蓝色鲸鱼一定十分眼熟.作 ...
- 将spring cloud打包docker镜像
简介:用spring cloud构建微服务后,微服务肯定要docker镜像化然后用rancher等可视化工具管理,这就是走完了一套基本的流程,现在简单介绍下 环境:两台centos7.x的服务器,一台 ...
- Python环境搭建、python项目以docker镜像方式部署到Linux
Python环境搭建.python项目以docker镜像方式部署到Linux 本文的项目是用Python写的,记录了生成docker镜像,然后整个项目在Linux跑起来的过程: 原文链接:https: ...
- 【Docker】(5)---springCloud注册中心打包Docker镜像
[Docker](5)---springCloud注册中心打包Docker镜像 上一篇文章讲了将镜像推送到远处私有仓库,然后再从私有仓库拉取该镜像的过程.而这里的镜像是直接从Docker拉取的. 所以 ...
- 将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定
1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...
- win10 下springcloud打包docker镜像部署。
1:建一个最简单的springcloud应用. 2:在根目录下新建dockerfile,文件如下: FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE ...
- Azure Devops实践(5)- 构建springboot项目打包docker镜像及容器化部署
使用Azure Devops构建java springboot项目,创建镜像并容器化部署 1.创建一个springboot项目,我用现有的项目 目录结构如下,使用provider项目 在根目录下添加D ...
- Docker镜像+nginx 部署 vue 项目
一.打包vue项目 在开发完的vue项目输入如下命名,打包生成dist文件夹 yarn build / npm run build 此时根目录会多出一个文件夹:dist文件夹,里面就是我们要发布的东西 ...
- Azure DevOps (十) 通过流水线完成Docker镜像的部署
上一篇文章中,我们通过azure的流水线完成了镜像推送到镜像仓库中去,本篇文章我们继续开始完成下一步,通过流水线把镜像从仓库拉取到任意一台公网的服务器上去, 完成镜像部署的闭环. 首先我们需要先准备一 ...
随机推荐
- python九周周末总结
python九周周末总结 UDP协议 udp协议的交互模式服务端不需要考虑客户端是否退出,你发多少那么他就会按照你发的东西直接去传输给客户端不存在黏包现象 服务端: import socket ser ...
- Spring 源码学习笔记10——Spring AOP
Spring 源码学习笔记10--Spring AOP 参考书籍<Spring技术内幕>Spring AOP的实现章节 书有点老,但是里面一些概念还是总结比较到位 源码基于Spring-a ...
- openstack中Neutron组件简解
一.Neutron概述 Neutron 的设计目标是实现"网络即服务(Networking as a Service)".为了达到这一目标,在设计上遵循了基于 SDN 实现网络虚拟 ...
- 声明式HTTP客户端-Feign 使用入门详解
什么是 OpenFeign OpenFeign (以下统一简称为 Feign) 是 Netflix 开源的声明式 HTTP 客户端,集成了 Ribbon 的负载均衡.轮询算法和 RestTemplat ...
- Springboot多属性文件配置
Springboot 多属性文件配置 配置文件后缀有两种: .properties和.yml 要完成多属性配置需要自定义PropertySourcesPlaceholderConfigurer 这个B ...
- 用trie树解决最大异或对问题(On)
在给定的N个整数A1,A2--ANA1,A2--AN中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N. 第二行输入N个整数A1A1-ANAN. 输出格式 输出一 ...
- 依赖项安全检测新利器:Scorecard API
Scorecard 是 OpenSSF 旗下的开源项目,用于评估开源软件风险,本文由该项目的主要贡献者 Naveen 撰写. 现代软件是建立在数百个甚至数千个第三方开源组件之上的,这些通常被称为依赖项 ...
- 关于使用kubeoperator搭建k8s集群使用containerd作为容器运行时,从自己搭建的habor仓库拉取镜像的有关说明
1.kubepi界面添加habor仓库信息,并授权给k8s集群 这一步的操作是当在工作负载选择从harbor仓库拉取镜像时会自动创建有关的secrets信息,从而不用事先手动创建了(有别于kuboar ...
- 【Ceph】Ceph学习理解Ceph的三种存储接口:块设备、文件系统、对象存储
文章转载自:https://blog.51cto.com/liangchaoxi/4048519
- (四)JPA - JQPL 实现增删改查
(一)JPA的快速入门 建议在需要使用时,看看之前的文章,先把环境搭起来. 5.JPQL JPQL和SQL 1.JPQL和SQL很像,查询关键字都是一样的 2.唯一的区别是:JPQL是面向对象的 JP ...