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的原创文章,请关注公众号"汪子熙":
相关推荐
SAP UI5建立在HTML5、CSS3和JavaScript的基础上,使用了响应式设计原则,让应用程序可以在各种设备上运行,包括桌面、平板和智能手机。 文档中提及的SAP UI5文档版本为1.48,发布日期是2017年8月7日,这份文档是...
SAP UI5应用程序在移动平台上的部署,可以通过将UI5应用程序打包成混合Android应用来实现。 打包SAP UI5应用成Android应用的过程,主要利用了SAP Mobile Platform(SMP)SDK。SMP SDK是SAP提供的一套工具,它允许...
文档《SAP UI5 Reference for SAP HANA》提供了关于如何在SAP HANA平台上开发和运行SAP UI5应用程序的详细指南。它包含多个章节,涵盖了从安装SAP UI5应用程序工具到支持应用程序国际化、本地化、测试,以及最终在...
##### 6.2 在 Java Web 服务器上测试 SAP UI5 应用 为了更接近实际部署环境的测试,可以在 Java Web 服务器(如 Tomcat)上运行应用。 - **设置 Tomcat 以测试 SAP UI5 应用**:确保正确配置 Tomcat 以支持 SAP UI...
通过使用Cordova(有时也被称作PhoneGap),可以将SAPUI5应用转换为可以在移动设备上安装和运行的混合应用。这种模式将SAPUI5界面和本地设备功能结合起来,提升用户体验。 5. WebIDE SAP Web IDE是SAP提供的集成...
通过使用SAP UI5,开发者可以创建一致的用户体验,无论用户是在桌面、平板还是手机上访问应用。 SAP UI5的核心组成部分包括: 1. **组件库**:SAP UI5包含大量预先构建的UI组件,如表格、图表、按钮、输入字段等,...
OpenUI5 与 SAP UI5 功能相似,但在企业级应用中 SAP UI5 更具优势。 - **UI5 与 SAP Fiori 的关系**:UI5 是具体的前端框架,用于实现 SAP Fiori 所定义的用户体验标准。SAP 官方基于 UI5 构建的一系列应用程序集合...
- **创建SAPUI5项目**:使用SAPUI5开发工具在Eclipse中创建项目。 - **数据绑定**:SAPUI5支持强大的数据绑定功能,能够自动更新UI显示的数据。 - **OData绑定**:特别地,SAPUI5还支持与OData服务的数据绑定,实现...
SAP UI5 是一款由 SAP 公司开发的企业级用户界面框架,旨在为业务应用提供现代化、响应式的用户体验。它基于 HTML5 技术栈构建,支持多种设备类型,包括桌面、平板和移动设备。SAP UI5 的核心优势在于其轻量级、易于...
SAPUI5不仅提供了一套完整的开发工具链,还具备高度的可扩展性和兼容性,是构建现代化企业级Web应用的理想选择。无论是初学者还是经验丰富的开发者,都能从中找到合适的工具和资源,快速构建高质量的业务应用。
不过,基于以上假设的知识点,可以总结得出,这份文档是SAP官方为用户提供的一份详尽的SAP UI5安装指导手册,它详细地介绍了安装流程、安装前的准备以及在安装过程中可能会遇到的常见问题和解决方案。这份文档对于...
在本教程中,我们将深入探讨如何开发一个使用SAPUI5和oData访问的数据交互应用程序。SAPUI5是SAP提供的一个强大的JavaScript框架,用于构建企业级的Web应用程序。而oData是一种开放的协议,它允许客户端通过HTTP访问...
SAPUI5(User Interface 5)是一款由SAP公司推出的开源JavaScript框架,用于构建企业级应用。它提供了丰富的UI控制库、灵活的数据绑定机制以及模块化的应用程序架构,使得开发者能够快速地构建高性能的Web应用。为了...
在 SAP UI5 开发中,通用组件(commons)是开发者常用的一类元素,它们提供了许多基本的用户界面功能,能够帮助构建高效、易用的应用。本资料主要关注 SAP UI5 的通用组件及其在实际开发中的应用示例。 SAP UI5 是...
在本文中,我们将深入探讨如何使用SAP UI5创建表单。SAP UI5是SAP公司推出的一款用于构建企业级Web应用程序的开源框架,它提供了丰富的用户界面元素和强大的数据绑定功能,使得开发人员能够轻松创建交互式、响应式的...
SAP Fiori应用程序可以运行在多种设备上,包括桌面电脑、平板和智能手机。为了开发这些应用程序,开发者需要配置一个适合的开发环境。Eclipse是一个集成开发环境(IDE),它为多种编程语言提供了开发工具,也包括...
- **在 Java Web 服务器上测试 SAPUI5 应用**: - **配置 Tomcat**:设置 Tomcat 服务器以支持 SAPUI5 应用的测试。 - **使用简单的代理 Servlet**:通过代理 Servlet 来避免跨域请求的问题,这对于本地开发环境中...
讲解SAPUI5如何搭建,如何开发应用。 说明,文档为英文 内容如下: SAPUI5 Overview Runtime Resources Programming Applications SAPUI5 Developer Studio Creating a SAPUI5 Project Resource Handling / ...
Cordova是一个用于构建跨平台移动应用的开源开发框架,通过使用SAPUI5与Cordova的结合,可以实现应用在不同设备上的兼容性。 5. 连接性工具:为了实现SAPUI5应用与后端系统的集成,开发者需要掌握与SAP系统通信的...
本示例着重于如何在 SAP UI5 应用中创建、定制和交互工具栏。下面将详细阐述相关知识点。 一、SAP UI5 工具栏的基本概念 SAP UI5 的工具栏是基于 `sap.m.Toolbar` 控件构建的,它是一个可自定义的水平布局容器,...