nacos docker 8848无法访问 无法访问docker容器_java使用原生语句操作mongo

对于本教程,您将拥有一个Docker化Spring-Boot实例程序,该应用程序与MongoDB通信以获取GET/POST API请求,并部署在Kubernetes集群中。前提条件


nacos docker 8848无法访问 无法访问docker容器_一键启动mongodb_02

  • Minikube
  • Kubectl
  • Docker
  • Maven

Docker是一个具有"社交"方面的Linux容器管理工具包,它允许用户发布容器镜像并且可以使用其他人发布的镜像。运行一个容器化进程的秘诀就是通过Docker镜像,在本篇文章中,我们将会构建一个简单的Spring Boot应用。您可以在https://github.com/aritnag/spring-boot-mongo-kubernetes-docker中找到该应用。

Docke File文件

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 Compose 文件 
  
 
   
  
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 App


nacos docker 8848无法访问 无法访问docker容器_一键启动mongodb_02

如果您想使用Maven来进行,请执行以下命令:



./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的最小容器:





docker build -t aritranag20/spring-boot-mongo-docker .


然后使用你在docker.io注册的用户名进行登录:





docker login


执行如下命令去发布你的镜像到Docker镜像中心:



docker push aritranag20/spring-boot-mongo-docker


容器化如果您想用Docker来运行,执行以下命令:





./docker-compose up



部署到Kubernetes集群现在我们Docker仓库中已经有一个可用的容器应用,我们可以将它部署到Kubernetes集群中。并且我们也会部署一个MongoDB节点来作为我们后端的数据支撑。使用如下命令来启动本地Kubernetes集群:


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}}]
 
  总结


nacos docker 8848无法访问 无法访问docker容器_一键启动mongodb_02

恭喜!你已经成功创建了一个Spring-Boot-MongoDB的Docker容器化应用,并在Kubernetes中托管了该应用程序。Spring Boot应用集群在容器内部默认使用端口8080运行,我们也在Pod中使用同样的端口,并启动多个实例来对服务进行负载均衡,可用使用 kubectl describe service spring-boot-mongo-docker命令来获取NodePort信息。

可选最后停止你本地的Kubernetes集群:


minikube stop