使用Kubernetes和Docker将Spring Boot和MongoDB作为容器部署
对于本教程,您将拥有一个Dockerized示例spring-boot应用程序,该应用程序与MongoDB通信以获取GET / POST REST API并部署在Kubernetes集群中。
准备
- minikube
- kubectl
- 搬运工人
- 行家
Docker是一个具有“社交”方面的Linux容器管理工具包,允许用户发布容器图像并使用其他人发布的容器图像。Docker镜像是运行容器化进程的秘诀,在本指南中,我们将为一个简单的Spring启动应用程序构建一个。
在这里找到Github存储库。
Docker文件:
FROM openjdk:8-jdk-alpine
ADD target/spring-boot-mongo-docker-1.0.0.jar app.jar
ENV JAVA_OPTS=””
ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar
Docker撰写:
version: “2.1”
services:
mongo:
image: mongo:3.2.4
ports:
– 27017:27017
command: –smallfiles
mongo-init:
build: ./mongo-init
links:
– mongo
mongo-client:
image: mongoclient/mongoclient
ports:
– 3030:3000
environment:
– MONGOCLIENT_DEFAULT_CONNECTION_URL=mongodb://mongo:27017
links:
– mongo
# APP ***************************************************************************************
spring-boot-mongo-docker:
image: aritranag20/spring-boot-mongo-docker
ports:
– 8080:8080
links:
– mongo
entrypoint: “java -Djava.security.egd=file:/dev/./urandom -jar /app.jar”
设置Spring Boot应用程序
如果要使用Maven运行,请执行:
./mvn package && java -jar target / spring-boot-mongo-docker-1.0.0.jar
并转到`http:// localhost:8080 / customer /
`查看您的持久客户。
Dockerisation
我们需要一个带JDK的容器来运行我们的Spring Boot应用程序。JDK 8已有许多公开上市的图片,但为了获得端到端的体验,我们将使用JDK 8构建一个基于Alpine Linux的最小容器:
docker build -t aritranag20 / spring-boot-mongo-docker。
登录docker.io后,使用您的凭据登录Docker ,
docker login
执行以下命令将映像推送到Docker注册表。
docker push aritranag20/spring-boot-mongo-docker
集装箱化
如果要使用Docker运行,请执行:
./docker-compose up
在Kubernetes上部署
现在我们已经在Docker注册表中提供了应用程序的映像,我们可以将它部署在Kubernetes集群中。我们还将为MongoDB设置一个节点,以便我们的应用程序将其用作后端。
使用以下命令启动本地Kubernetes集群:
minikube start
然后,我们可以为集群启动仪表板:
minikube dashboard
接下来,在群集中创建应用程序的部署。
kubectl create -f deployment.yml
我们可以看到服务的描述:
kubectl describe service spring-boot-mongo-docker
现在获取服务的确切地址:
minikube service spring-boot-mongo- docker
这将启动浏览器并指向端点。例如在我的情况下,
curl http://192.168.99.101:30864/user =>
[{"id":"58bcd7ad5908010005cce257","firstName":"Arun","lastName":null,"email":null,"address":{"street1":null,"street2":null,"town":null,"postcode":null,"state":null}}]
结论
恭喜!您刚刚使用MongoDB为Spring Boot应用程序创建了一个Docker容器,并在Kubernetes中托管了该应用程序!默认情况下,Spring Boot应用程序在容器内的端口8080上运行,我们将其映射到pod上的相同端口,该端口在服务的多个副本之间进行负载平衡,并且可以通过从kubectl describe service spring-boot-mongo-docker
命令获取NodePort来评估 。
可选的
最后停止当地的kubernetes集群:
minikube stop
原文标题《Deploying Spring Boot and MongoDB as Containers Using Kubernetes and Docker》
作者:Aritra Nag
译者:February
不代表云加社区观点,更多详情请查看原文链接
- 【java.lang.UnsupportedClassVersionError】版本不一致出错
- Yeoman 官网教学案例:使用 Yeoman 构建 WebApp
- JSP与JavaBeans
- Log4j官方文档翻译(四、如何在java中输出日志消息)
- 展望未来:使用 PostCSS 和 cssnext 书写 CSS
- Java多线程之Runable与Thread
- 关于 devbridge-autocomplete 插件多选操作的实现方法
- node-sass 安装失败的解决措施
- JavaMelody监控SQL
- 关于jboss的线程问题+java.lang.outofmemoryError
- 《了不起的 nodejs》中 TwitterWeb 案例 bug 解决
- java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
- 【java开发系列】—— Tomcat编译报错
- java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 《重构-代码整洁之道TypeScript版》第3天
- 可读代码编写炸鸡十 - 保持单纯
- C++基础 多线程笔记(二)
- JVM详解之:HotSpot VM中的Intrinsic methods
- C++基础 多线程笔记(一)
- C++基础 数据类型占字节大小分析
- socket方式传输文件
- 《重构-代码整洁之道TypeScript版》第2天
- 堆积柱形图(stacked barplot)展示密码子偏向性的RSCU值
- 《重构-代码整洁之道TypeScript版》第一天
- Hive小知识之分桶抽样
- CountDownLatch类在性能测试中应用
- 算法集锦(20) | 自动驾驶 | 交通标志识别算法
- 敏捷回归测试
- 算法集锦(21) | 自动驾驶 |汽车转向角控制算法