一、集群信息
- OS: ubuntu 22.04
- 集群主机:2台
- kubesphere:3.4
- kubenetes: v1.22.12
- 容器服务:docker
二、前提环境
- 搭建nfs
- 可以使用docker命令
- 私人镜像仓库,我用的是nexus3
三、前端部署
(1)打包docker
# 使用官方的Nginx镜像作为基础镜像
FROM {docker仓库}/nginx:alpine
# 删除默认的Nginx配置文件
RUN rm -rf /usr/share/nginx/html/*
# 将构建的静态文件复制到Nginx的html目录
COPY dist /usr/share/nginx/html
# 复制自定义的Nginx配置文件,
# 使用配置字典
# COPY nginx.conf /etc/nginx/nginx.conf
# 暴露Nginx的默认端口
EXPOSE 3000
# 启动Nginx
CMD ["nginx", "-g", "daemon off;"]
(2)推送镜像
# 打包
docker build -t frontend .
# 查看镜像id
docker images
# 修改标签
docker tag 40064903f520 {docker仓库}/frontend:1.0
# 推送到nexus仓库
docker push 92.168.18.101:32490/frontend:1.0
(3)配置字典 nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 3000;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location @router {
rewrite ^.*$ /index.html last;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ @router; # 解决刷新404问题
}
location /api/ {
proxy_pass http://{主机ip:端口}/;
#proxy_pass http://baidu.com;
# rewrite "^/board/(.*)$" /$1 break;
}
}
}
(4)挂载配置文件
将dist包上传至nfs共享目录,挂载至/etc/nginx/nginx.conf
四、后端部署 后端程序必须安装java17和python3的运行环境,此处创建了一个包含java17和python3的镜像,部署如下:
(1)制作包含jdk17和python3的镜像
# 使用 Java 17 官方镜像作为基础镜像
FROM {docker仓库}/openjdk:17-jdk-slim
# 更改源地址,否则apt-get无法下载
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-get clean
# 更新系统并安装 Python 3 和必要工具
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-venv \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 验证 Java 和 Python 安装版本(可选)
RUN java -version && python3 --version
(2)打包后端jar包的镜像
# 使用 Java 17 官方镜像作为基础镜像
FROM {docker仓库}/java17_python3:1.0
# 设置工作目录
WORKDIR /app
# 将应用程序代码拷贝到镜像中
COPY target/*.jar /app/backend.jar
# 安装 Python 项目依赖(如果有 requirements.txt 文件)
RUN if [ -f "requirements.txt" ]; then pip3 install -r requirements.txt; fi
# 默认运行命令
ENTRYPOINT ["java","-jar","/app/backend.jar"]
EXPOSE 8088
(3)挂载jar包目录 将jar包上传至nfs目录下,创建hostpath卷进行挂载