当前位置:   article > 正文

k8s离线部署芋道源码前端_芋道前端打包

芋道前端打包

概述

   本篇将对 k8s离线部署芋道源码前端 进行详细的说明,对如何构建 Dockerfile,如何整合 Nginx,如何整合 ingress 进行实践。

   相关文章:nacos在k8s上的集群安装实践

  效果如下(电脑只8G内存,所以演示较卡):

k8s离线部署芋道源码前端

编译

先将前端源码进行编译

npm run build:prod
  • 1

在这里插入图片描述

Dockerfile 构建

结构目录如下:
在这里插入图片描述

Dockerfile

FROM harbor.easzlab.io.local:8443/library/nginx:stable-alpine3.19-perl

# 将 Vue 项目的打包文件复制到 Nginx 静态文件目录下
COPY dist/ /usr/share/nginx/html/

# 复制自定义的 Nginx 配置文件到容器中
COPY nginx.conf /etc/nginx/conf.d/default.conf

# 暴露容器的 80 端口
EXPOSE 80

# 容器启动时执行的命令
CMD ["nginx", "-g", "daemon off;"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

nginx.conf

server {
    listen 80;
    server_name localhost;

    location / {
        root   /usr/share/nginx/html/;
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
    }
    location /prod-api/{
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://gateway.default.svc.cluster.local:48080/;
    }
    # 避免actuator暴露
    if ($request_uri ~ "/actuator") {
        return 403;
    }
    error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

构建

先构建镜像,再上传至私服。

docker build -t fun-vue/fun-vue:1.0.0 .
docker tag fun-vue/fun-vue:1.0.0 harbor.easzlab.io.local:8443/library/fun-vue:1.0.0
docker push  harbor.easzlab.io.local:8443/library/fun-vue:1.0.0
  • 1
  • 2
  • 3

在这里插入图片描述

k8s部署

前端镜像部署

vue-dp.yaml


apiVersion: apps/v1
kind: Deployment
metadata:
  name: vue
spec:
  # 根据需求设置副本数量
  replicas: 1
  selector:
    matchLabels:
      app: vue
  template:
    metadata:
      labels:
        app: vue
    spec:
      containers:
      - name: vue
        image: harbor.easzlab.io.local:8443/library/fun-vue:1.0.0
        imagePullPolicy: Always
        ports:
        - containerPort: 80
          name: http
        - containerPort: 443
          name: https


---
# 创建Pod的Service
apiVersion: v1
kind: Service
metadata:
  name: vue-svc
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: vue

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

在这里插入图片描述

ingress


#ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-all
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
#    kubernetes.io/ingress.class: nginx
spec:
  ingressClassName: nginx
  rules:
  - host: "all.fun.com"
    http:
      paths:
        - pathType: Prefix
          path: /
          backend:
            service:
              name: openresty-svc
              port:
                number: 80
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/953294
推荐阅读
相关标签
  

闽ICP备14008679号