jar包如何编写docker,并部署至k8s

jar包如何编写docker,并部署至k8s

从开发手里拿到jar包,dockerfile怎么编写,一般需要改动什么内容
如何生成镜像,并上传至仓库,
怎样部署至k8s
yaml文件怎么写,一般需要改动那些内容

参考GPT和自己的思路:

好的,关于您的问题,我会给您详细讲解。

  1. 编写 Dockerfile

Dockerfile 是用于构建 Docker 镜像的文件,通常包含了应用程序的编译、打包、发布等操作。对于 jar 包的应用程序,可以使用以下比较常见的 Dockerfile:

# 基于 Java 8
FROM java:8

# 拷贝 jar 包到容器中
COPY your-app.jar /app.jar

# 运行 jar 包
CMD ["java", "-jar", "/app.jar"]

这个 Dockerfile 中包含了三个主要部分:基础镜像 FROM 语句、拷贝 jar 包 COPY 语句、运行 jar 包 CMD 语句。其中,您需要根据实际情况修改 your-app.jar 的文件名。

  1. 生成镜像并上传至仓库

在编写好 Dockerfile 后,需要使用 docker 命令生成镜像。使用以下命令可以创建 jar 包镜像并上传至仓库:

# 构建镜像
docker build -t your-app-image .

# 上传镜像
docker push your-docker-repo/your-app-image

其中,your-app-image 是您的镜像名称,. 表示当前目录。your-docker-repo 是您的 Docker 仓库。

  1. 部署至 k8s

部署应用程序到 k8s 集群通常需要用到 Deployment 和 Service 两个资源类型。其中,Deployment 用于指定应用程序容器的数量、版本、配置等信息;Service 用于暴露应用程序容器的访问入口。

以下是一个示例 yaml 文件,用于部署一个基于 jar 包的应用程序:

apiVersion: v1
kind: Service
metadata:
  name: your-app-service
spec:
  selector:
    app: your-app
  ports:
  - name: http
    port: 80
    targetPort: 8080
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: your-app
spec:
  selector:
    matchLabels:
      app: your-app
  replicas: 2
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      labels:
        app: your-app
    spec:
      containers:
      - name: your-app
        image: your-docker-repo/your-app-image:latest
        ports:
        - containerPort: 8080
        livenessProbe:
          httpGet:
            path: /actuator/health
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10

该文件中包含了两个部分:Service 和 Deployment。其中,Service 的类型是 LoadBalancer,用于在 k8s 集群之外暴露应用程序的访问入口。Deployment 则指定了应用程序容器的数量、容器镜像、端口等信息。

需要注意的是,您需要修改以下内容以适应您的应用程序:

  • Service 的名称、端口号;
  • Deployment 的名称、容器数量、容器镜像、端口号等。

希望我的解答能够帮助到您。如果您有其他问题,欢迎继续咨询。