Docker / Kubernetes部署Java / SpringBoot项目

J2EE 专栏收录该内容
12 篇文章 0 订阅

一、部署流程

在这里插入图片描述

二、构建镜像

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"<hoaven@163.com>
ADD demo-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
CMD java -jar app.jar

5、war包的Dockerfile

FROM tomcat:8
MAINTAINER "hoaven"<hoaven@163.com>
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接口:
在这里插入图片描述

  • 2
    点赞
  • 2
    评论
  • 11
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值