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

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

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


Proof of Concept: Deploying ABAP in Kubernetes


image.pngimage.pngimage.pngimage.pngimage.png

image.png今天咱们暂时不聊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上。

image.png

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

image.png

(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

image.png

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


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


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

https://hub.docker.com/_/openjdk

image.png

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


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


docker exec -it 8302db78f838 /bin/sh


image.png

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

image.png

第五行:把当前项目通过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

image.png

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


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


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


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

image.png

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

image.png

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

image.png

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

image.png

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


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


感谢阅读。




相关文章
|
21天前
|
存储 测试技术 Linux
【Docker项目实战】使用Docker部署bender个人仪表板
【4月更文挑战第2天】使用Docker部署bender个人仪表板
33 1
|
22天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
91 0
|
1天前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
19 1
|
4天前
|
存储 测试技术 文件存储
【Docker项目实战】使用Docker部署Sun-Panel导航面板
【4月更文挑战第19天】使用Docker部署Sun-Panel导航面板
54 7
|
5天前
|
监控 数据挖掘 Docker
《Docker 简易速速上手小册》第8章 Docker 在企业中的应用(2024 最新版)
《Docker 简易速速上手小册》第8章 Docker 在企业中的应用(2024 最新版)
21 0
|
7天前
|
测试技术 Linux 网络安全
【好玩的开源项目】使用Docker部署SyncTV视频同步和共享平台
【4月更文挑战第16天】使用Docker部署SyncTV视频同步和共享平台
44 1
|
11天前
|
测试技术 Linux 数据安全/隐私保护
【Docker项目实战】使用Docker部署Seatsurfing预订座位系统
【4月更文挑战第12天】使用Docker部署Seatsurfing预订座位系统
37 3
|
14天前
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
|
15天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
26 0
|
15天前
|
存储 Linux Shell
centos 部署docker容器 安装 、基本使用方法(一)
centos 部署docker容器 安装 、基本使用方法(一)
27 0