对于本教程,您将拥有一个Dockerized示例spring-boot应用程序,该应用程序与MongoDB通信以获取GET / POST REST API并部署在Kubernetes集群中。
Docker是一个具有“社交”方面的Linux容器管理工具包,允许用户发布容器图像并使用其他人发布的容器图像。Docker镜像是运行容器化进程的秘诀,在本指南中,我们将为一个简单的Spring启动应用程序构建一个。
在这里找到Github存储库。
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
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”
如果要使用Maven运行,请执行:
./mvn package && java -jar target / spring-boot-mongo-docker-1.0.0.jar
并转到`http:// localhost:8080 / customer /
`查看您的持久客户。
我们需要一个带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
现在我们已经在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
不代表云加社区观点,更多详情请查看原文链接
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。