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

时间:2022-06-14
本文章向大家介绍使用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

不代表云加社区观点,更多详情请查看原文链接