使用Kubernetes和Docker将Spring Boot与MongoDB作为容器部署

戳蓝字“CSDN云计算”关注我们哦!


640?wx_fmt=jpeg


对于本教程,您将拥有一个Docker化Spring-Boot实例程序,该应用程序与MongoDB通信以获取GET/POST API请求,并部署在Kubernetes集群中。
前提条件

640?wx_fmt=png


  • Minikube

  • Kubectl

  • Docker

  • Maven


Docker是一个具有"社交"方面的Linux容器管理工具包,它允许用户发布容器镜像并且可以使用其他人发布的镜像。运行一个容器化进程的秘诀就是通过Docker镜像,在本篇文章中,我们将会构建一个简单的Spring Boot应用。
您可以在https://github.com/aritnag/spring-boot-mongo-kubernetes-docker中找到该应用。
Docke File文件
 
 
  1. FROM openjdk:8-jdk-alpine

  2. ADD target/spring-boot-mongo-docker-1.0.0.jar app.jar

  3. ENV JAVA_OPTS=””

  4. ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar


Docker Compose 文件
 
 
  1. version: 2.1

  2. services:

  3. mongo:

  4. image: mongo:3.2.4

  5. ports:

  6. 27017:27017

  7. command: smallfiles

  8. mongo-init:

  9. build: ./mongo-init

  10. links:

  11. mongo

  12. mongo-client:

  13. image: mongoclient/mongoclient

  14. ports:

  15. 3030:3000

  16. environment:

  17. MONGOCLIENT_DEFAULT_CONNECTION_URL=mongodb://mongo:27017

  18. links:

  19. mongo

  20. # APP ***************************************************************************************

  21. spring-boot-mongo-docker:

  22. image: aritranag20/spring-boot-mongo-docker

  23. ports:

  24. 8080:8080

  25. links:

  26. mongo

  27. entrypoint: java -Djava.security.egd=file:/dev/./urandom -jar /app.jar


构建Spring Boot App

640?wx_fmt=png


如果您想使用Maven来进行,请执行以下命令:
 
 
  1. ./mvn package && java -jar target/spring-boot-mongo-docker-1.0.0.jar


现在可以到http://localhost:8080/customer/ 来看到你存储的用户信息。
Docker化
我们需要一个JDK环境的容器来运行我们的Spring Boot应用。现在有许许多多的自带JDK 8的公共可用镜像,但是为了获取端到端的体验,我们自己来构建一个基于JDK 8 Alpha Linux的最小容器:
 
 
  1. docker build -t aritranag20/spring-boot-mongo-docker .


然后使用你在docker.io注册的用户名进行登录:
 
 
  1. docker login


执行如下命令去发布你的镜像到Docker镜像中心:
 
 
  1. docker push aritranag20/spring-boot-mongo-docker


容器化
如果您想用Docker来运行,执行以下命令:
 
 
  1. ./docker-compose up


部署到Kubernetes集群
现在我们Docker仓库中已经有一个可用的容器应用,我们可以将它部署到Kubernetes集群中。并且我们也会部署一个MongoDB节点来作为我们后端的数据支撑。
使用如下命令来启动本地Kubernetes集群:
 
 
  1. minikube start


你也可以启动集群的DashBoard(可视化界面):
 
 
  1. minikube dashborad


接下来,为我们的应用在集群中创建一个部署:
 
 
  1. kubectl create -f deployment.yml


我们可以用如下命令查看服务的描述:
 
 
  1. kubectl describe service spring-boot-mongo-docker


现在可以启动并获取服务的地址:
 
 
  1. minikube service spring-boot-mongo-docker


它将启动浏览器并指向端点。例如,在我的例子中:
 
 
  1. curl http://192.168.99.101:30864/user =>

  2. [{"id":"58bcd7ad5908010005cce257","firstName":"Arun","lastName":null,"email":null,"address":{"street1":null,"street2":null,"town":null,"postcode":null,"state":null}}]


总结

640?wx_fmt=png


恭喜!你已经成功创建了一个Spring-Boot-MongoDB的Docker容器化应用,并在Kubernetes中托管了该应用程序。Spring Boot应用集群在容器内部默认使用端口8080运行,我们也在Pod中使用同样的端口,并启动多个实例来对服务进行负载均衡,可用使用 kubectl describe service spring-boot-mongo-docker命令来获取NodePort信息。
可选
最后停止你本地的Kubernetes集群:
 
 
  1. minikube stop


推荐阅读


1.微信群:

添加小编微信:color_ld,备注“进群+姓名+公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


2.征稿:

投稿邮箱:liudan@csdn.net;微信号:color_ld。请备注投稿+姓名+公司职位。

640?wx_fmt=png 喜欢就点击“好看”吧!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值