feat:更新项目基于Docker和K8S的容器部署脚本

This commit is contained in:
dianjiu
2024-09-12 23:49:26 +08:00
parent a59cd57378
commit c0ce26d228
19 changed files with 301 additions and 30 deletions

View File

@@ -1,6 +1,6 @@
# 服务端口号
server:
port: 12801
port: 1020
spring:
application:

View File

@@ -3,22 +3,20 @@
# Author: DianJiu
# 指定基础镜像,这是分阶段构建的前期阶段
FROM harbor.njydsz.com/library/jdk:17 as builder
# 维护者
MAINTAINER DianJiu <dianjiuxyz@gmail.com>
#VOLUME:挂载目录
VOLUME /temp
#ADD 将app.jar文件将拷贝到容器中,默认拷贝到根路径下
#也可以直接写成ADD app.jar /app.jar 或者 ADD app.jar /
ADD remitem-web-1.0.0.jar remitem-web.jar
ADD remi-sys-app-3.1.0.jar remi-sys-app.jar
#修改app.jar这个文件的访问时间和修改时间为当前时间,而不会修改文件的内容。
RUN bash -c "touch /remitem-web.jar"
RUN bash -c "touch /remi-sys-app.jar"
#ENTRYPOINT 应用启动命令 参数设定
#由于tomcat的session id的生成主要通过java.security.SecureRandom生成随机数来实现,导致启动过程很慢
#通过-Djava.security.egd=file:/dev/./urandom参数可以加快随机数产生过程
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/remitem-web.jar"]
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/remi-sys-app.jar"]
#EXPOSE 容器暴露端口
EXPOSE 18080
EXPOSE 1020

View File

@@ -1,5 +1,7 @@
## 如果基于Docker部署项目 直接运行如下脚本即可
```shell
sh ./docker_deploy.sh
docker logs -f remitem-web
```
docker logs -f dev-remi-sys-app
```

View File

@@ -1,7 +1,12 @@
docker stop remitem-web
docker rm -f remitem-web
docker rmi remitem-web
docker build -t remitem-web .
docker images
docker run --restart=always -t -dit -p 18080:18080 -e TZ="Asia/Shanghai" --name remitem-web remitem-web
docker ps
#先删除原有的镜像
docker images | grep dev-remi-sys-app | awk '{print $3}' | xargs docker rmi -f
docker build -t dev-remi-sys-app .
docker images | grep dev-remi-sys-app
#把新镜像推送到私服
docker login -uadmin -pRemi123 harbor.******.com
docker tag dev-remi-sys-app harbor.******.com/remi-top/dev-remi-sys-app:3.1.0
docker tag dev-remi-sys-app harbor.******.com/remi-top/dev-remi-sys-app
docker push harbor.******.com/remi-top/dev-remi-sys-app:3.1.0
docker push harbor.******.com/remi-top/dev-remi-sys-app
#基于Docker启动容器
docker run --restart=always -t -dit -p 1020:1020 --name dev-remi-sys-app harbor.******.com/remi-top/dev-remi-sys-app

View File

@@ -0,0 +1,22 @@
# Docker image for springboot application
# VERSION 0.0.1
# Author: DianJiu
# 指定基础镜像,这是分阶段构建的前期阶段
FROM harbor.njydsz.com/library/jdk:17 as builder
#VOLUME:挂载目录
VOLUME /temp
#ADD 将app.jar文件将拷贝到容器中,默认拷贝到根路径下
#也可以直接写成ADD app.jar /app.jar 或者 ADD app.jar /
ADD remi-sys-app-3.1.0.jar remi-sys-app.jar
#修改app.jar这个文件的访问时间和修改时间为当前时间,而不会修改文件的内容。
RUN bash -c "touch /remi-sys-app.jar"
#ENTRYPOINT 应用启动命令 参数设定
#由于tomcat的session id的生成主要通过java.security.SecureRandom生成随机数来实现,导致启动过程很慢
#通过-Djava.security.egd=file:/dev/./urandom参数可以加快随机数产生过程
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/remi-sys-app.jar"]
#EXPOSE 容器暴露端口
EXPOSE 1020

View File

@@ -0,0 +1,13 @@
## 如果基于K8S部署项目 直接运行如下脚本即可
```shell
sh ./docker_deploy.sh
sh ./k8s_deploy.sh
kubectl get pods -n remi-top
kubectl describe pod dev-remi-sys-app -n remi-top
kubectl get deployment dev-remi-sys-app -n remi-top -o yaml
```

View File

@@ -0,0 +1,69 @@
## Service
apiVersion: v1
kind: Service
metadata:
name: dev-remi-sys-app
labels:
app: dev-remi-sys-app
spec:
type: NodePort
ports:
- name: dev-remi-sys-app
port: 1020
protocol: TCP
targetPort: 1020
nodePort: 30020
selector:
app: dev-remi-sys-app
---
## Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: dev-remi-sys-app
labels:
app: dev-remi-sys-app
spec:
replicas: 2
selector:
matchLabels:
app: dev-remi-sys-app
template:
metadata:
labels:
app: dev-remi-sys-app
spec:
containers:
- image: harbor.******.com/remi-top/dev-remi-sys-app
imagePullPolicy: Always
name: dev-remi-sys-app
ports:
- containerPort: 1020
protocol: TCP
env:
- name: NACOS_HOST
value: 192.168.31.200
- name: NACOS_PORT
value: "30888"
- name: NAME_SPACE
value: dev
- name: GROUP_NAME
value: dev
- name: spring.application.name
value: remi-sys-web
- name: spring.profiles.active
value: dev
resources:
limits:
cpu: "1"
memory: "500Mi"
requests:
cpu: "0.2"
memory: "200Mi"
volumeMounts:
- name: logs
mountPath: /logs
volumes:
- name: logs
persistentVolumeClaim:
claimName: remi-log

View File

@@ -0,0 +1,10 @@
#先删除原有的镜像
docker images | grep dev-remi-sys-app | awk '{print $3}' | xargs docker rmi -f
docker build -t dev-remi-sys-app .
docker images | grep dev-remi-sys-app
#把新镜像推送到私服
docker login -uadmin -pRemi123 harbor.******.com
docker tag dev-remi-sys-app harbor.******.com/remi-top/dev-remi-sys-app:3.1.0
docker tag dev-remi-sys-app harbor.******.com/remi-top/dev-remi-sys-app
docker push harbor.******.com/remi-top/dev-remi-sys-app:3.1.0
docker push harbor.******.com/remi-top/dev-remi-sys-app

View File

@@ -0,0 +1,5 @@
#先删除原有的Pod
kubectl delete deployment dev-remi-sys-app -n remi-top --grace-period=0 --force
kubectl delete svc dev-remi-sys-app -n remi-top
#启动新的Pod
kubectl create -f dev-remi-sys-app.yaml -n remi-vip