在SAP云平台上部署和运行Docker应用

容器技术,Docker,虚拟化,这些名词诞生尽管有很长一段时间了,但是在云原生开发领域仍旧热度不减。甚至连SAP赖以成名的ABAP Netweaver,如今也踏上了容器化的上云探索之路,比如下面这张来自SAP社区的一篇博客:

Proof of Concept: Deploying ABAP in Kubernetes

今天咱们暂时不聊ABAP的容器化,先从最简单的概念开始。网络上关于Docker容器的技术文章多如牛毛,Jerry也就不再重复了,我还是紧扣SAP技术和SAP解决方案来写。

如果有一个已经能够正常运行的Java应用,可以将其以Docker容器的方式,部署且运行在SAP云平台上吗?当然可以,而且只需要简单的几个命令行即可。

本文接下来的步骤是针对那些听说过Docker容器技术,但尚未动手实践过的朋友。通过阅读本文,可以了解将Java应用容器化并部署到SAP云平台运行的大致步骤。您也可以根据本文的步骤动手试一试,只需要在本地搭一个最简单的Java开发环境,安装Docker客户端和申请一个SAP云平台的trial账号即可。

(1) 首先得有一个能在本地正常运行的SpringBoot应用。如果没有,百度之然后自己动手做一个。

如果实在不想自己动手,从Jerry的github仓库上克隆一个下来也行:

本地配置好maven和JDK之后,直接用命令行启动它:

mvn spring-boot:run

你会看到Tomcat started on port 8000的提示,意思是该应用已经成功启动,监听在本地端口8000上。

浏览器里输入localhost:8000/product, 看到Hello World. 至此,我们就有了一个本地正常运行的SpringBoot应用了,下一步是将其打包成Docker镜像。

(2) 在SpringBoot项目里新建一个名叫Dockerfile的文件,输入以下内容:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
VOLUME /log
EXPOSE 8080
ADD target/prolikeService.jar app.jar
ENV JAVA_OPTS="-Dserver.port=8080"
ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar

这实际是一个指令文件,Docker客户端会根据里面的内容,制作一个Docker镜像。

简要介绍每一行内容的含义。

第一行:指定待制作的镜像是基于名叫openjdk:8-jdk-alpine的镜像,在Docker Hub网站上能找到更多关于该镜像的说明:
https://hub.docker.com/_/openjdk

第二行和第三行:定义两个名叫tmp和log的持久化存储。容器运行时产生的数据,随着容器的销毁而销毁,但有时我们又希望这些数据能够持久化保存,比如需要分析某个容器运行时产生的日志文件,这时可以使用Dockerfile里VOLUME关键字提供的容器持久化技术,创建所谓的“卷”,将容器应用运行时写入数据的目录,映射到宿主机上的某个目录下。

如果一个容器尚处在运行状态,我们可以用命令行进入容器内部,查看log文件夹里的运行日志文件

docker exec -it 8302db78f838 /bin/sh

如果该容器已经销毁,我们就可以到宿主机的/var/lib/docker/volumes目录下,查看持久化的日志文件:

第五行:把当前项目通过maven打包而成的jar包拷贝到容器内部,重命名为app.jar
第六~七行:设置JVM启动参数,暴露8080端口给外部。

Dockerfile文件编写完毕后,使用命令行制作镜像:

docker build -t i042416/springbootexample:v1 .

v1代表该镜像的标签,命令行尾部的句号代表当前目录。

镜像制作完毕后,使用命令行将制作好的镜像推送到Docker Hub网站上(有点像我们本地用git客户端提交代码到Github上):

docker push i042416/springbootexample:v1

成功之后,能够在Docker Hub上看到推送好的镜像:

https://hub.docker.com/repository/docker/i042416/springbootexample

这样,稍后SAP云平台就能从Docker Hub上拉取这个镜像了。

(3) 登录SAP云平台CloudFoundry环境,使用命令行部署, 用参数--docker-image指定我们刚刚上传到Docker Hub上的镜像名称,部署生成的应用名叫jerryjavadocker.

cf push jerryjavadocker --docker-image i042416/springbootexample:v6

因为我的容器镜像修改过好几次,所以标签从v1升到了v6.

成功部署,应用的状态显示成了running:

在SAP云平台也能看到这个成功部署的应用,处于运行状态:

运行这个成功部署好的Docker应用,和我们在本地mvn spring-boot:run的效果一样。至此这个SpringBoot应用的容器化和SAP云平台的部署就成功了。

顺便说一句,昨天Jerry的文章 SAP新一代全栈开发工具:SAP Business Application Studio 推送之后,有一位朋友在文章下面留言:

关于传统ABAP开发人员如何学习SAP Cloud Platform相关技术,Jerry后续如果有机会的话会专门写一篇短文介绍自己的做法,敬请期待。

感谢阅读。

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

原文地址:https://www.cnblogs.com/sap-jerry/p/12370682.html

时间: 2024-10-04 11:34:12

在SAP云平台上部署和运行Docker应用的相关文章

如何在SAP云平台上使用MongoDB服务

首先按照我这篇文章在SAP云平台上给您的账号分配MongboDB服务:如何在SAP云平台的Cloud Foundry环境下添加新的Service 然后从这个链接下载SAP提供的例子程序. 1. 使用命令行 cf marketplace查看当前SAP云平台的MongoDB的版本号:在我使用的SAP云平台上是v3.0-dev 使用如下命令行创建一个服务实例: cf create-service mongodb v3.0-dev mongo-service 2. 到例子程序的根目录下,使用命令mvn

在Heroku云平台上部署Node.js应用

        最近使用Node.js和Websocket写了一个在线聊天室,想找一个即支持Node.js又支持Websocket的免费的平台部署上去,我的个人博客网站是部署在新浪SAE上的,可是新浪SAE不支持Node.js,无奈挑来选去只有Heroku最合适了.         Heroku是构建在AWS之上的一个PaaS云平台,现在支持Ruby, Node.js, Python, Java, 和 PHP,代码的部署是通过git进行,编译和运行都是自动的.我使用Heroku的感觉就是,在He

最简单的SAP云平台开发教程 - 如何开发UI5应用并运行在SAP云平台上

选择Services Catalog,根据关键字搜索到WebIDE服务,点击超链接打开WebIDE: 进入workspace,选择Git->Clone Repository: 从我的github clone:https://github.com/i042416/jerrylist clone完毕之后选择Run->Run index.html, 检查clone是否成功. 正常情况下应该看到这个UI5应用: 将该应用从git的workspace部署到SAP cloud platform上: App

企业数字化转型与SAP云平台

我们生活在一个数字化时代.信息领域里发展迅猛的数字技术和成本不断降低的硬件设备,正以前所未有的方式改变着我们工作和生活的方式. Digital Mesh 美国一家著名的从事信息技术研究和提供咨询服务的Gartner公司,在2015年提出了未来IT技术的十大发展趋势.Gartner公司副总裁,David Cearley,在2015年美国Orlando召开的ITxpo专题研讨会上,将这十大发展趋势分为三类: 1. 数字网格 2. 智能机器/设备 3. 新的IT现实技术 隶属于这三类里的十大发展趋势并

JDBC + SAP云平台 = 运行在云端的数据库应用

在前一篇文章JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用我介绍了如何通过JPA和EclipseLink操作部署在SAP云平台上的HANA数据库实例. 在这篇文章里,我们使用JDBC代替JPA和Eclipse来完成同样的任务. 通过这个链接下载例子程序. 点击该超链接下载Java Web Tomcat 8 SDK. 例子程序位于该SDK的samples文件夹下. 导入至Eclipse之后,同样需要将其Targeted Runtimes改为Java Web Tom

使用Eclipse开发Java应用并部署到SAP云平台SCP上去

1. 首先根据这个链接配置好Eclipse. 确保SAP Cloud Platform Tools for Java正确安装. 确保neo SDK的路径配置正确: 我使用的是下图这个SDK:neo-java-web-sdk-3.51.14.zip 将我的github 项目下载到本地, 导入到Eclipse去,确保本地能够运行成功. 然后新建一个服务器实例,类型为SAP Cloud Platform,主机名填hanatrial.ondemand.com: 应用程序的名称填jerrydemo,Run

将Java应用部署到SAP云平台neo环境的两种方式

方法1 - 使用Eclipse Eclipse里新建一个服务器: 服务器类型选择SAP Cloud Platform: 点Finish,成功创建了一个Server: Eclipse里选择要部署的项目,右键->Run as Server, 选择上一步创建的Server即完成部署. 方法2 - 使用SAP云平台Cockpit 选择本地打包好的war文件,点击Deploy按钮: 部署成功: 要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码: 原文地址:htt

如何把SAP UI5应用部署到SAP云平台的Fiori Launchpad里去

(1) 首先在WebIDE里把开发好的SAP ui5应用部署到SAP Cloud Platform上: 在弹出窗里维护部署明细: 成功部署后,点击Register to SAP Fiori Launchpad: (2)在SAP云平台控制台里,点击Services菜单页面,启用Portal Service: 点击enable按钮启用这项服务: (3) Portal服务启用后,点击链接"Go to Service",打开云平台上的portal. 点击Create New Site按钮: S

JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用

JPA(Java Persistence API)的实现Provider有Hibernate,OpenJPA和EclipseLink等等. 本文介绍如何通过JPA + Eclipse连接SAP云平台上的HANA数据库实例. 1. 登陆SAP云平台Cockpit,创建一个新的HANA DB实例: 设置数据库ID和System user的密码. 创建成功后,HANA DB实例状态为CREATING: 稍等片刻后,状态变为STARTED,可用. 2. 接下来就可以开发Java应用通过JPA操作这个云端