`
JerryWang_SAP
  • 浏览: 1064445 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

在Kubernetes上运行SAP UI5应用(上)

阅读更多

2018年只剩最后30天了。Jerry在2017年的最后一天,曾经立下一个目标:这个微信公众号在2018年保证至少每周发布一篇SAP原创技术文章

从Jerry在后台统计的2018全年文章数量来看,这个目标已经提前实现了。为了感谢大家的支持,在2018年的最后一天,Jerry会发布一个合集:《SAP成都研究院2018年XX篇原创文章合集》,包含了2018年全年SAP成都研究院的同事们发布过的文章。

Jerry在11月份中旬去SAP上海研究院参加了Kubernetes的内部培训(详情参考我的前一篇文章:站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma)。在SAP上海研究院的同事们如果想参加这个内部培训,可以联系同事Yang Katie。

为了避免很快就把三位老师传授的知识忘得精光,我得给自己找点练习来巩固所学的东西。

Jerry 2014年底加入SAP CRM Fiori开发团队时,我们开发的CRM Fiori应用,还是部署在传统的SAP Netweaver上的,详情参考我的文章:SAP Fiori应用的三种部署方式

后来,我陆续接触了Salesforce的云平台Heroku,也学着很多程序员一样把自己的博客搭在github上,再后来接触了SAP自己的云平台,自然而然地就会试着把SAP UI5部署到这些平台上:

现在既然学了Kubernetes,那么就来试试将SAP UI5应用运行在Kubernetes上面吧。

我用来部署的UI5应用名叫Jerry's Service Order, 是一个典型的Master-Detail风格的应用,左边Master List是所有服务订单列表,选中任意一个,在右边的Detail页面显示选中的服务订单的明细。

 

这个UI5应用的外观如上图所示。为简单起见,所有显示的数据都是从项目里的一个json文件读取的,不支持新订单的创建或修改。该应用可以从我的github获取:

https://github.com/i042416/jerrylist

如本文标题所示,这个练习的终极目标就是让该UI5应用运行于Kubernetes上,那么第一步就是先让它运行于容器里。和SAP Kubernetes内部培训一样,我选择了Docker这个非常受欢迎的容器引擎作为这个Kubernetes练习的容器技术。

关于Docker的简介和安装介绍,请参阅阮一峰大神的文章:Docker 入门教程

http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

为什么我们要使用Docker容器?下面这段话摘自阮一峰的博客:

“Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。”

Jerry梳理了一下将SAP UI5应用运行在Docker容器里的全过程,总共分三个步骤:

1. 让UI5应用运行在本地容器内

2. 将包含了UI5应用的本地容器打成一个新镜像

3. 将本地镜像上传到Docker hub,再下载测试

下面是详细步骤。

1. 让UI5应用运行在本地容器内

如果仅仅只会跑Docker的Hello World(其实Jerry两周前就是这个水平,囧),拿到这个需求,从什么地方入手?

当然是从包含了能运行UI5应用的那些web服务器的镜像入手,这里我选择了Nginx镜像,在Docker hub上有10.4k个stars。

 

用下面的命令直接运行这个镜像:

docker run -it nginx

docker ps拿到实例化的容器id:

 

然后进入处于运行状态中的容器,执行shell命令:

docker exec -it bbc5d48a761c /bin/sh

 

看到#提示符后,进入容器内部的目录:/usr/share/nginx/html

如果我们能将github上的UI5应用的文件想办法拷贝到这个目录下面,就达到了在本地Docker容器运行UI5应用的目的了。

 

有很多种办法可以把github里的资源下载到Docker容器内部这个指定的目录下, 这里Jerry用一种我觉得最简单的方式,即通过Docker Volume技术将宿主机上的某个目录A以Volume的方式挂接到容器内部的html文件夹上,这样我们直接把github仓库上的webapp文件夹下载到宿主机的文件夹A即可,这个文件夹会以Volume的形式自动出现在容器内部映射好的目录内。

docker run -d -p 1081:80 -v pwd/webapp:/usr/share/nginx/html/webapp –name jerry-custom nginx

使用参数-p 1081:80将Nginx服务通过端口1081暴露出来,因此我这次要使用http://localhost:1081测试新启动的容器实例。

再次执行docker exec进入docker容器内部,确保/usr/share/nginx/html文件夹下确实包含了期望看到的UI5应用。

 

浏览器里输入localhost:1081/webapp,确保UI5应用能够正常访问,至此这个应用已经在本地docker容器里成功运行起来了。

 

2. 将包含了UI5应用的本地容器打成一个新镜像

到目前为止这个本地docker实例是没有办法给其他人使用的,为此我们得先利用dockerfile制作一个包含了UI5应用的docker镜像,上传到docker hub上,以便其他人下载。

随便创建一个文件夹,比如jerry-build, 然后把webapp文件夹放进去,再创建一个dockerfile文件,内容就三行:

**FROM nginx:stable **

**COPY webapp/ /usr/share/nginx/html/webapp/ **

RUN ls -la /usr/share/nginx/html/webapp*

这三个指令从语义上不难理解,第一行FROM命令告诉docker镜像构建例程使用nginx的stable版本作为基础镜像进行新镜像的构建。第二行COPY命令负责把webapp文件夹下的所有UI5资源文件拷贝到nginx docker镜像的对应目录内。第三行RUN命名执行shell命令ls,生成新的镜像文件。

dockerfile的详细语法请参考Docker 官方文档:

https://docs.docker.com/engine/reference/builder/#usage

执行命令docker build ., 最后一个.代表“当前目录”。

 

看到上图"Successfully built(成功构建)"的输出信息后,我们加上参数-t jerry-nginx-image:1.0重新构建一个名为jerry-nginx-image的镜像:

 

成功构建后,使用参数-p暴露一个新的端口1082:

docker run -d -p 1082:80 jerry-nginx-image:1.0

现在localhost:1082/webapp也能访问UI5应用了。

 

使用**docker images, **现在我们能看到这个构建好的镜像了,接下来我们会将其推送到Docker hub上。

 

3. 将本地镜像上传到Docker hub

Docker hub的使用方式几乎和github完全一致。说句题外话:虽然github今年6月份被微软收购了,但是用户体验一点也没变,一如既往的优秀。

 

关于github更多另类用法,请参阅Jerry的文章:写在Github被微软收购之际 - Github的那些另类用法

首先在Docker hub上注册一个帐号:

 

创建一个新仓库:

 

取名i042416/ui5-nginx:

 

新建好的空的仓库看起来是这样的:

 

使用docker ps得到本地正在运行的docker容器的ID:

 

使用commit命令提交这个本地容器的修改(类比git commit ):

docker commit 53de4188b702 i042416/ui5-nginx

 

现在准备将这个本地提交过后的镜像推送到Docker hub了。

执行命令docker login:

 

在CloudFoundry上部署应用的朋友们可以把docker login类比成cf login(下面是cf login的截图):

 
 

最后一步就是用docker push将本地镜像推送到Docker hub:

 
 

刷新Docker hub上新建的仓库,能观察到刚才的本地推送记录和镜像尺寸。

 

现在可以通知您的朋友,在其电脑上消费这个镜像了。当然您也可以把自己电脑上的本地镜像删除,再使用docker run执行。

在两种情况下,由于本地镜像检索失败,我们都将看到提示信息:Unable to find image ‘i042416/ui5-nginx:latest' locally, 然后观察到远端镜像的下载过程。

 

使用1080端口基于镜像i042416/ui5-nginx启动一个新的容器:

 

localhost:1080/webapp能够正常工作:

 

docker inspect命令证实了这个启动的容器确实是基于镜像i042416/ui5-nginx的。

 

在这个主题的下半部分,我们将使用这个i042416/ui5-nginx镜像,开始我们的Kubernetes之旅。敬请期待。

更多阅读

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

 
0
0
分享到:
评论

相关推荐

    SAP UI5 文档

    SAP UI5建立在HTML5、CSS3和JavaScript的基础上,使用了响应式设计原则,让应用程序可以在各种设备上运行,包括桌面、平板和智能手机。 文档中提及的SAP UI5文档版本为1.48,发布日期是2017年8月7日,这份文档是...

    SAP UI5打包成APP

    SAP UI5应用程序在移动平台上的部署,可以通过将UI5应用程序打包成混合Android应用来实现。 打包SAP UI5应用成Android应用的过程,主要利用了SAP Mobile Platform(SMP)SDK。SMP SDK是SAP提供的一套工具,它允许...

    SAP UI5 Reference for SAP HANA

    文档《SAP UI5 Reference for SAP HANA》提供了关于如何在SAP HANA平台上开发和运行SAP UI5应用程序的详细指南。它包含多个章节,涵盖了从安装SAP UI5应用程序工具到支持应用程序国际化、本地化、测试,以及最终在...

    SAP UI5入门

    ##### 6.2 在 Java Web 服务器上测试 SAP UI5 应用 为了更接近实际部署环境的测试,可以在 Java Web 服务器(如 Tomcat)上运行应用。 - **设置 Tomcat 以测试 SAP UI5 应用**:确保正确配置 Tomcat 以支持 SAP UI...

    SAPUI5(SAP Fiori)运行环境介绍

    通过使用Cordova(有时也被称作PhoneGap),可以将SAPUI5应用转换为可以在移动设备上安装和运行的混合应用。这种模式将SAPUI5界面和本地设备功能结合起来,提升用户体验。 5. WebIDE SAP Web IDE是SAP提供的集成...

    sapui5-runtime

    通过使用SAP UI5,开发者可以创建一致的用户体验,无论用户是在桌面、平板还是手机上访问应用。 SAP UI5的核心组成部分包括: 1. **组件库**:SAP UI5包含大量预先构建的UI组件,如表格、图表、按钮、输入字段等,...

    SAP UI5入门概述

    OpenUI5 与 SAP UI5 功能相似,但在企业级应用中 SAP UI5 更具优势。 - **UI5 与 SAP Fiori 的关系**:UI5 是具体的前端框架,用于实现 SAP Fiori 所定义的用户体验标准。SAP 官方基于 UI5 构建的一系列应用程序集合...

    SAPUI5-Training

    - **创建SAPUI5项目**:使用SAPUI5开发工具在Eclipse中创建项目。 - **数据绑定**:SAPUI5支持强大的数据绑定功能,能够自动更新UI显示的数据。 - **OData绑定**:特别地,SAPUI5还支持与OData服务的数据绑定,实现...

    SAP UI5 OVERVIEW

    SAP UI5 是一款由 SAP 公司开发的企业级用户界面框架,旨在为业务应用提供现代化、响应式的用户体验。它基于 HTML5 技术栈构建,支持多种设备类型,包括桌面、平板和移动设备。SAP UI5 的核心优势在于其轻量级、易于...

    SAPUI5 详细讲解

    SAPUI5不仅提供了一套完整的开发工具链,还具备高度的可扩展性和兼容性,是构建现代化企业级Web应用的理想选择。无论是初学者还是经验丰富的开发者,都能从中找到合适的工具和资源,快速构建高质量的业务应用。

    SAPUI5_InstGuide

    不过,基于以上假设的知识点,可以总结得出,这份文档是SAP官方为用户提供的一份详尽的SAP UI5安装指导手册,它详细地介绍了安装流程、安装前的准备以及在安装过程中可能会遇到的常见问题和解决方案。这份文档对于...

    Tutorial to Develop a SAPUI5 Application with oData Access

    在本教程中,我们将深入探讨如何开发一个使用SAPUI5和oData访问的数据交互应用程序。SAPUI5是SAP提供的一个强大的JavaScript框架,用于构建企业级的Web应用程序。而oData是一种开放的协议,它允许客户端通过HTTP访问...

    SAPUI5开发环境配置

    SAPUI5(User Interface 5)是一款由SAP公司推出的开源JavaScript框架,用于构建企业级应用。它提供了丰富的UI控制库、灵活的数据绑定机制以及模块化的应用程序架构,使得开发者能够快速地构建高性能的Web应用。为了...

    sap ui5通用组件例子

    在 SAP UI5 开发中,通用组件(commons)是开发者常用的一类元素,它们提供了许多基本的用户界面功能,能够帮助构建高效、易用的应用。本资料主要关注 SAP UI5 的通用组件及其在实际开发中的应用示例。 SAP UI5 是...

    sap ui5表单例子

    在本文中,我们将深入探讨如何使用SAP UI5创建表单。SAP UI5是SAP公司推出的一款用于构建企业级Web应用程序的开源框架,它提供了丰富的用户界面元素和强大的数据绑定功能,使得开发人员能够轻松创建交互式、响应式的...

    SAPUI5: Deploy Development Environment - Deploy Development Tool Eclipse 0003

    SAP Fiori应用程序可以运行在多种设备上,包括桌面电脑、平板和智能手机。为了开发这些应用程序,开发者需要配置一个适合的开发环境。Eclipse是一个集成开发环境(IDE),它为多种编程语言提供了开发工具,也包括...

    SAPUI5 Learning

    - **在 Java Web 服务器上测试 SAPUI5 应用**: - **配置 Tomcat**:设置 Tomcat 服务器以支持 SAPUI5 应用的测试。 - **使用简单的代理 Servlet**:通过代理 Servlet 来避免跨域请求的问题,这对于本地开发环境中...

    SAPUI5概述 学习PPT 内容详细讲解

    讲解SAPUI5如何搭建,如何开发应用。 说明,文档为英文 内容如下: SAPUI5 Overview Runtime Resources Programming Applications SAPUI5 Developer Studio Creating a SAPUI5 Project Resource Handling / ...

    SAPUI5(SAP Fiori)开发技术要求

    Cordova是一个用于构建跨平台移动应用的开源开发框架,通过使用SAPUI5与Cordova的结合,可以实现应用在不同设备上的兼容性。 5. 连接性工具:为了实现SAPUI5应用与后端系统的集成,开发者需要掌握与SAP系统通信的...

    sap ui5工具栏例子

    本示例着重于如何在 SAP UI5 应用中创建、定制和交互工具栏。下面将详细阐述相关知识点。 一、SAP UI5 工具栏的基本概念 SAP UI5 的工具栏是基于 `sap.m.Toolbar` 控件构建的,它是一个可自定义的水平布局容器,...

Global site tag (gtag.js) - Google Analytics