使用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


推荐阅读

  • 5G大规模商用来临之前,你必须知道的几个知识点

  • “离开360时,它只给了我一块钱”

  • AI找Bug,一键快速预测

  • 原子互换:一统公链江湖的神来之笔

  • 春晚鬼畜 B 站日排行最高,赵本山:我的时代还没有结束!

  • PDF翻译神器,再也不担心读不懂英文Paper了

  • 新闻联播也可以拿来做数据分析?

  • 高晓松侃5G!2019开年大讲揭示运营商的秘密


1.微信群:

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


2.征稿:

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

640?wx_fmt=png喜欢就点击“好看”吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 va_end 宏 - C语言零基础入门教程

目录 一.前言二.va_end 简介三.va_end 使用四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.前言 对 printf 函数的使用,我们并不陌生,首先我们来看看下面关于 printf 函数的几种调用方式: printf("…

5种数据分析常用的思维方法!

戳蓝字“CSDN云计算”关注我们哦!转自:中国统计网来源:网络大数据在数据分析中,数据分析思维是框架式的指引,实际分析问题时还是需要很多“技巧工具”的。就好比中学里你要解一元二次方式,可以用公式法、配…

多线程总结

package com.wuming.thread; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;//多线程总结 public class ThreadNew {public static void main(String[] args) {new MyThread1().start();new…

C语言 va_arg 宏 - C语言零基础入门教程

目录 一.前言二.va_arg 简介三.va_arg 使用四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.前言 对 printf 函数的使用,我们并不陌生,首先我们来看看下面关于 printf 函数的几种调用方式: printf("…

分布式系统与消息投递

戳蓝字“CSDN云计算”关注我们哦!原文:https://draveness.me/message-delivery消息是一个非常有趣的概念,它是由来源发出一个离散的通信单元,被发送给一个或者一群接受者,无论是单体服务还是分布式系统中都有消息的概念…

什么是计算机网络

1.打电话:连接 TCP 2.发短信:发就完了 UDP 计算机网络:地理位置不同的多台计算机及外部设备,通过线路连接,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系…

C语言 vprintf 函数 - C语言零基础入门教程

目录 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明2.vprintf 函数声明 二.vprintf 函数和 printf 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明 int printf…

“迁移策略+新容器运行时”应对有状态应用的冷热迁移挑战

戳蓝字“CSDN云计算”关注我们哦!作者:稻农来源:阿里系统软件技术稻农(叶磊)阿里云智能事业群高级技术专家参与主导容器运行时及网络创新工作;目前的工作侧重于基于进程虚拟化的研究及增强(网络…

C语言 main 函数参数 main(int argc, char *argv[]) - C语言零基础入门教程

目录 一.main 函数写法二.main 函数参数简介三.使用 main 函数参数 1.打印 main 函数参数 a.直接运行 exe 文件b.打开 cmd 命令行窗口执行 exe 文件c.打开 cmd 命令行窗口执行 exe 文件并设置 main 函数参数 2.使用 main 函数参数 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C …

网络通信的两个要素

如何实现网络通信? 通信双方地址: ip 端口号 192.168.16.124:5900 规则:网络通信的协议 TCP/IP参考模型: 小结: 1.网络编程两个主要问题: 定位一台或多台主机 找到主机如何通信 2.网络编程要素 …

讲讲亿级PV的负载均衡架构!

戳蓝字“CSDN云计算”关注我们哦!来源:孤独烟引言本来没想写这个题材的,为了某某童鞋能够更好的茁壮成长,临时写一篇负载均衡的。负载均衡,大家可能听过什么3层负载均衡、4层负载均衡、7层负载均衡什么的?那…

C语言 vprintf 函数和 printf 函数区别 - C语言零基础入门教程

目录 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明2.vprintf 函数声明 二.vprintf 函数和 printf 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明 int printf…

ip地址讲解啊

ip地址 ip地址&#xff1a;inetaddress 唯一定位一台网络上计算机 127.0.0.1&#xff1a;本机localhost C:\Users\admin>ping 127.0.0.1 正在 Ping 127.0.0.1 具有 32 字节的数据: 来自 127.0.0.1 的回复: 字节32 时间<1ms TTL128 来自 127.0.0.1 的回复: 字节32 时间&…

端口之讲解

端口表示计算机上的一个程序的进程 不同进程有不同的端口号&#xff0c;用来区分软件 被规定0~65535 TCP,UDP&#xff1a;65535*2 tcp:80,udp:80吗&#xff0c;单个协议下&#xff0c;端口号不能冲突 端口分类 公有端口0~1023 HTTP&#xff1a;80 HTTPS&#xff1a;443 …

云漫圈 | 学Python还是Java, 8张漫画带你全面分析

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;Leoxin来源&#xff1a;菜鸟学PythonJava和Python两门语言都是目前非常热门的语言&#xff0c;可谓北乔峰南慕容&#xff0c;二者不分上下&#xff0c;棋逢对手。但是对于初学者来说&#xff0c;非常困惑&#xff0…

C语言 exit 函数 - C语言零基础入门教程

目录 一.exit 函数简介二.exit 函数使用三.exit 函数和 return 区别四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.exit 函数简介 #include <stdlib.h>/*描述&#xff1a;终止正在执行的进程*//*函数参数&#xff1a;status 等于 1 …

react之讲解

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>hello_react</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div> <!-- 核心库 --> <s…

史上最全SQL优化方案

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;惨绿少年来源&#xff1a;Hollis在进行MySQL的优化之前&#xff0c;必须要了解的就是MySQL的查询过程&#xff0c;很多查询优化工作实际上就是遵循一些原则&#xff0c;让MySQL的优化器能够按照预想的合理方式运行而…

C语言 abort 函数 - C语言零基础入门教程

目录 一.abort 函数简介二.abort 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.abort 函数简介 C 语言库函数 abort 函数的作用是异常终止一个进程&#xff0c;意味着 abort 后面的代码将不再执行。 #include <stdlib.h>/…

react之虚拟DOM的两种创建方式

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>1_使用jsx创建虚拟DOM</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div> <!-- 核心库 -->…