dockerfile(容器镜像构建文件)
Dockerfile 用于定义容器镜像的构建方式,包括基础镜像、依赖安装、文件复制等。 通过 Dockerfile 文件可以构建应用的容器镜像,用于在 Kubernetes 中部署应用。
示例:
# 使用 openjdk:11 镜像作为基础镜像
FROM openjdk:11
# 维护者信息
MAINTAINER huq
# 设置临时文件目录为容器内的 /tmp 目录
VOLUME /tmp
# 将当前目录下所有的 .jar 文件复制到容器内的 /huq.jar 文件
COPY *.jar /huq.jar
# 创建一个用于部署的目录
RUN mkdir /opt/deploy
# 创建一个用于上传文件的目录
RUN mkdir /opt/deploy/upload
# 容器启动命令,运行 Spring Boot 应用程序
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/huq.jar"]
# 暴露容器的端口号
EXPOSE 8080
Kubernetes service(服务配置):
Service 用于定义应用的服务暴露方式,包括暴露的端口、服务类型等。 通过 Service 文件可以将应用的后端 Pod 与外部网络连接起来。
示例
# 指定 Kubernetes API 版本
apiVersion: v1
# 定义资源类型为 Service
kind: Service
metadata:
# 指定 Service 的名称为 huq-app-service
name: huq-app-service
spec:
# 指定 Service 的选择器
selector:
# 标识要连接到该 Service 的 Pod 的标签
app: huq-app
# 指定 Service 的端口配置
ports:
- protocol: TCP
port: 80
targetPort: 80
# 指定 Service 的类型为 LoadBalancer
type: LoadBalancer
Kubernetes Deployment(部署配置)
Deployment 用于定义应用的部署方式,包括副本数量、Pod 模板等。 通过 Deployment 文件可以指定容器镜像的来源、端口映射等信息。
示例
# 指定 Kubernetes API 版本
apiVersion: apps/v1
# 定义资源类型为 Deployment
kind: Deployment
metadata:
# 指定 Deployment 的名称为 huq-app
name: huq-app
spec:
# 指定副本数为 1
replicas: 1
selector:
matchLabels:
# 选择具有 app=huq-app 标签的 Pod
app: huq-app
template:
metadata:
labels:
# 为 Pod 设置 app=huq-app 标签
app: huq-app
spec:
containers:
- name: huq-app-container
# 指定容器使用的镜像及其版本
image: huq-app-image:latest
ports:
- containerPort: 80