Browse Source

feat(components): dockerfile update

Yi 2 weeks ago
parent
commit
c35f4bc20f
7 changed files with 6320 additions and 265 deletions
  1. 10 28
      Dockerfile
  2. 4 2
      build/plugins/mock.ts
  3. 11 0
      docker-compose.yaml
  4. 4 0
      nginx.conf
  5. 0 6
      package.json
  6. 6290 228
      pnpm-lock.yaml
  7. 1 1
      src/service/request/index.ts

+ 10 - 28
Dockerfile

@@ -1,4 +1,4 @@
-FROM node:18-slim AS build
+FROM node:20-alpine as build
 
 # 设置工作目录和环境变量
 WORKDIR /app/kpt-system-web
@@ -6,34 +6,16 @@ ENV NODE_OPTIONS="--max-old-space-size=4096"
 ENV PNPM_HOME=/usr/local/bin
 ENV VITE_USER_NODE_ENV=production
 
-# 安装系统依赖(改用 slim 镜像避免 Alpine 兼容性问题)
-RUN apt-get update && \
-    apt-get install -y git python3 make g++ jq && \
-    rm -rf /var/lib/apt/lists/*
-
-# 使用 Corepack 管理 PNPM
-RUN corepack enable && \
-    corepack prepare pnpm@latest --activate
+COPY . .
 
-# 复制包管理文件(利用缓存层)
-COPY package.json pnpm-lock.yaml .npmrc ./
-COPY patches ./patches
-
-# 替换原有的安装和构建部分
-RUN pnpm install --shamefully-hoist && \
-    pnpm add \
-    vite@4.5.14 \
-    vite-plugin-mock@2.9.8 \
-    mockjs@1.1.0 \
-    @antfu/install-pkg@0.1.1 \
-    @iconify/utils@1.2.2 -D && \
-    # 强制锁定模块系统
-    jq '. + {"type": "commonjs"}' package.json > package.json.tmp && \
-    mv package.json.tmp package.json && \
-    # 清理缓存
-    rm -rf node_modules .pnpm-store && \
-    pnpm install --frozen-lockfile --ignore-scripts && \
-    pnpm build
+# 安装系统依赖(改用 slim 镜像避免 Alpine 兼容性问题)
+RUN mkdir -p /root/.local/share/pnpm/store/v3/files && chown -R $(whoami) /root/.local/share/pnpm/store/v3/
+RUN npm install -g pnpm@7 && npm install -g typescript@5.1.6
+RUN echo "declare module 'lodash-es';" > types.d.ts
+RUN pnpm config set registry https://registry.npmmirror.com
+RUN pnpm update vue-demi@latest
+RUN pnpm install --fetch-timeout 60000
+RUN pnpm build
 
 # 生产阶段
 FROM nginx:alpine AS prod

+ 4 - 2
build/plugins/mock.ts

@@ -2,8 +2,10 @@ import { viteMockServe } from 'vite-plugin-mock';
 
 export default viteMockServe({
   mockPath: 'mock',
-  localEnabled: false,
-  prodEnabled: false,
+  localEnabled: true,
+  prodEnabled: true,
+  supportTs: true, // 支持TypeScript
+  logger: true, // 启用日志
   injectCode: `
 		import { setupMockServer } from '../mock';
 		setupMockServer();

+ 11 - 0
docker-compose.yaml

@@ -0,0 +1,11 @@
+version : '3'
+services:
+  kpt-mqtt-console-admin:
+    privileged: true
+    container_name: kpt_mqtt_console_admin
+    restart: always
+    image: registry.cn-hangzhou.aliyuncs.com/kpt-event/kpt-system-web:test
+    ports:
+      - "8080:80"
+        #environment:
+        #- DOMAIN=http://kpt8081.kptyun.com/

+ 4 - 0
nginx.conf

@@ -12,6 +12,10 @@ server {
         root /usr/share/nginx/html;
         #index index.html;
         try_files $uri $uri/ /index.html;
+        # 显式允许所有HTTP方法
+        if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|PATCH|OPTIONS)$ ) {
+            return 405;
+        }
         client_max_body_size 300m;   #最大接受300m文件以内的
         client_body_timeout 20s;
    }

+ 0 - 6
package.json

@@ -134,11 +134,5 @@
   },
   "lint-staged": {
     "*.{js,jsx,mjs,json,ts,tsx,vue}": "eslint . --fix"
-  },
-  "type": "commonjs",
-  "resolutions": {
-    "package-manager-detector": "1.2.0",
-    "@antfu/install-pkg": "0.1.1",
-    "@iconify/utils": "1.2.2"
   }
 }

File diff suppressed because it is too large
+ 6290 - 228
pnpm-lock.yaml


+ 1 - 1
src/service/request/index.ts

@@ -12,7 +12,7 @@ export const request = createRequest({
 export const mockRequest = createRequest({ baseURL: '/mock' });
 
 export const backgroundRequest = createRequest({
-  baseURL: 'http://210.16.186.252:8000/api/v1'
+  baseURL: 'http://210.16.186.252:9000/api/v1'
 });
 /* export const backgroundRequest = createRequest({ baseURL: 'http://192.168.1.96:8000/api/v1' });
  */

Some files were not shown because too many files changed in this diff