Docker / Kubernetes部署Java / SpringBoot项目

版权声明:本文为hoaven原创文章,未经博主允许不得转载。 https://blog.csdn.net/hehuanchun0311/article/details/84316194

一、部署流程

在这里插入图片描述

二、构建镜像

1、创建应用

可以到 http://start.spring.io/ (或者借助IDE)创建一个SpringBoot 的应用,在创建的时候,请选择Web 依赖,以方便部署到 Kubernetes 之后可以查看效果。

2、暴露测试接口

新建一个Rest接口:

@RestController public class HelloCtroller {
  @RequestMapping("/")
  public String home() {
  return "Hello Docker World";
  } 
}

3、添加Docker Image 依赖

dockerfile-maven-plugin 用于打包和上传 Docker Image:

<plugin>
 <groupId>com.spotify</groupId>
 <artifactId>docker-maven-plugin</artifactId>
 <version>0.4.14</version>
 <configuration>
   <imageName>${project.groupId}.${project.artifactId}</imageName>
   <dockerDirectory>${project.build.outputDirectory}</dockerDirectory>
   <dockerHost>http://127.0.0.1:2375</dockerHost>
   <resources>
     <resource>
       <directory>${project.build.directory}</directory>
       <include>${project.build.finalName}.jar</include>
     </resource>
   </resources>
 </configuration> 
</plugin>

<imageName>${project.groupId}.${project.artifactId}</imageName>只指定了镜像名称,默认tag为latest,也可以<imageName>${project.groupId}.${project.artifactId}:${project.version}</imageName>指定tag。

4、jar包的Dockerfile

在resources目录下创建Dockerfile文件:

FROM java:8
MAINTAINER "hoaven"<[email protected]>
ADD demo-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
CMD java -jar app.jar

5、war包的Dockerfile

FROM tomcat:8
MAINTAINER "hoaven"<[email protected]>
ADD demo-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/app.war
EXPOSE 8081
CMD ["catalina.sh", "run"]

6、上传镜像

mvn clean install docker:build

7、docker中运行项目

docker images 查看镜像
在这里插入图片描述

docker run 启动运行镜像

docker run -p 8080:8080 -t com.docker.demo:latest

启动成功后可通过访问http://localhost:8080查看效果。

8、删除容器

为了集成k8s,先把刚创建的container停止并删除。

docker stop container_id
docker rm container_id

三、集成k8s

1、创建YAML文件

apiVersion: apps/v1beta2  
kind: Deployment  
metadata:  
  name: demo-jar  
  labels:  
    app: demo-jar  
spec:  
  replicas: 1
  revisionHistoryLimit: 10
  selector:  
    matchLabels:  
      app: demo-jar 
  template:  
    metadata:  
      labels:  
        app: demo-jar  
    spec:  
      containers:  
      - name: demo-jar
        image: com.docker.demo:latest
        ports:  
        - containerPort: 8080
          protocol: TCP  
        livenessProbe:  
          httpGet:  
            path: /  
            port: 8080  
          initialDelaySeconds: 30  
          timeoutSeconds: 30  
        imagePullPolicy: IfNotPresent  
      # Comment the following tolerations if Dashboard must not be deployed on master  
      tolerations:  
      - key: node-role.kubernetes.io/master  
        effect: NoSchedule  
  
---  
apiVersion: v1  
kind: Service  
metadata:  
  name: demo-jar
  namespace: default
  labels:  
    app: demo-jar
spec:  
  ports:  
    - port: 8080  
      targetPort: 8080
  selector:  
    app: demo-jar 
  type: NodePort  

2、创建Deployment和Service

kubectl create -f example-demo.yaml

创建Deployment时会根据replicas参数值来自动创建对应数量的pod。

查看Service:
在这里插入图片描述

查看pod日志:
在这里插入图片描述

验证Rest接口:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hehuanchun0311/article/details/84316194