发现一种集中的方法 来监控你的虚拟基础设施、内部IT设施和云基础设施-所有这些都统一在这个 统一平台 中
对于本教程,您将拥有一个Docker化Spring-Boot实例程序,该应用程序与MongDB通信以获取GET/POST api请求,并部署在Kubernates集群中。
Docker 是一个具有"社交"方面的Linux 容器管理工具包,它允许用户发布容器镜像并且可以使用其他人发布的镜像。运行一个容器化进程的秘诀就是通过Docker 镜像,在本篇文章中,我们将会构建一个简单的Spring Boot应用。
您可以在 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 Alpha Linux来构建最小的容器。
docker build -t aritranag20/spring-boot-mongo-docker .
然后使用你在docker.io 注册的用户名进行登录
docker login
执行如下命令去发布你的镜像到Docker镜像中心
docker push aritranag20/spring-boot-mongo-docker
如果您想用Docker来运行,执行以下命令
./docker-compose up
现在我们Docker仓库中已经有一个可用的容器应用,我们可以将它部署到Kubernates 急群中。并且我们也会部署一个MongoDB节点来作为我们后端的数据支撑。
使用如下命令来启动本地Kubernates集群:
minikube start
你也可以启动集群的DashBoard(可视化界面)
minikube dashborad
接下来,为我们的应用在集群中创建一个部署
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}}]
恭喜!你已经成功创建一个Spring-Boot-MongDB的Docker容器化应用,并在Kubernates中托管了该应用程序。Spring Boot应用集群在容器内部默认使用端口8080运行,我们也在pods中使用同样的端口,并启动多个实例来对服务进行负载均衡,可用使用 docker describe service spring-boot-mongo-docker 命令来获取NodePort信息
最后停止你本地的Kubernates集群
minikube stop
原文链接: 使用Kubernates和Docker将Spring Boot与MongoDB作为容器部署 (翻译:刘明)