在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后续如果有机会的话会专门写一篇短文介绍自己的做法,敬请期待。
感谢阅读。
本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
sublime text的dockerfile语法高亮插件
bing搜索关键字sublime text dockfile, 打开第一条搜索结果:https://packagecontrol.io/packages/Dockerfile%20Syntax%20Highlighting 点这个github.com的超链接: 打开链接https://github.com/asbjornenge/Docker.tmbundle,把仓库的文件下载成一个压缩包。 打开sublime text,选择“浏览插件”: 会自动打开该应用存放插件的文件夹,将之前从github仓库下载的Dockerfile语法高亮的压缩包拷贝过来,解压: 重启sublime text,语法高亮生效了: 本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。
- 下一篇
看人工智能如何实现各种“变脸”
云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 01 计算机视觉发展下的人脸识别与图像处理 在当前的人工智能大潮下,计算机视觉的发展及其在人脸识别上的应用已发展出广泛的应用场景。据统计,2013年中国人脸识别市场规模仅为8.61亿元,2014年突破10亿元,并长期保持逐年快速增长的趋势。伴随火车站、零售支付以及安防等领域的应用需求,中国人脸识别市场在2018年以高达27.6亿元。然而,除却管理与安全防卫的需要,人脸识别技术在文化娱乐的场景同样拥有极大的热度,尤其针对“人脸”的图像处理领域,计算机视觉与迁移学习等技术已发展出“AI换脸”、“真人照片卡通化”等应用模式,各类移动应用屡见不鲜。此外,诸如“妆容转移”、“染发剂效果模拟”等围绕人脸图像处理的应用在零售营销领域同样存在不小的市场潜力。 02 图像处理中常用人工智能技术 深度学习:机器学习的分支,因深度学习可以通过无监督或半监督特征学习算法和分层特征提取从海量数据中自动提取特征,使其在计算机视觉领域拥有极佳的应用效果。 计算机视...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19