diff --git a/Dockerfile.ARM b/Dockerfile.ARM new file mode 100755 index 0000000..f1d1ae8 --- /dev/null +++ b/Dockerfile.ARM @@ -0,0 +1,153 @@ +# 基础镜像 - 使用ARM64版本 +FROM node:18-alpine-arm64 AS base +# FROM 899806cd3ba7 as base +# 更改 apk 镜像源为阿里云 +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories +# 设置 npm 镜像源 +RUN yarn config set registry https://registry.npmmirror.com + +# 全局安装 pnpm 并设置其镜像源 +RUN yarn global add pnpm && pnpm config set registry https://registry.npmmirror.com + +# 设置工作目录 +WORKDIR /app + +# 复制 pnpm workspace 配置文件 +COPY pnpm-workspace.yaml ./ + +# 首先复制 package.json, package-lock.json 和 pnpm-lock.yaml 文件 +COPY package*.json pnpm-lock.yaml* ./ + +COPY tsconfig.base.json . +# 利用 Docker 缓存机制,如果依赖没有改变则不会重新执行 pnpm install +#100-500 5-40 + +FROM base As server-build +WORKDIR /app +COPY packages/common /app/packages/common +COPY packages/tus /app/packages/tus +COPY apps/server /app/apps/server +RUN pnpm install --filter common +RUN pnpm install --filter tus +RUN pnpm install --filter server +RUN pnpm --filter common generate && pnpm --filter common build:cjs +RUN pnpm --filter tus build +RUN pnpm --filter server build + +FROM base As server-prod-dep +WORKDIR /app +COPY packages/common /app/packages/common +COPY packages/tus /app/packages/tus +COPY apps/server /app/apps/server +RUN pnpm install --filter common --prod +RUN pnpm install --filter tus --prod +RUN pnpm install --filter server --prod + +FROM server-prod-dep as server +WORKDIR /app +ENV NODE_ENV production +COPY --from=server-build /app/packages/common/dist ./packages/common/dist +COPY --from=server-build /app/packages/tus/dist ./packages/tus/dist +COPY --from=server-build /app/apps/server/dist ./apps/server/dist +COPY apps/server/entrypoint.sh ./apps/server/entrypoint.sh + +RUN chmod +x ./apps/server/entrypoint.sh +RUN apk add --no-cache postgresql-client + + +EXPOSE 3000 + +ENTRYPOINT [ "/app/apps/server/entrypoint.sh" ] + + + +FROM base AS web-build +# 复制其余文件到工作目录 +COPY . . +RUN pnpm install +RUN pnpm --filter web build + +# 第二阶段,使用 nginx 提供服务 +FROM nginx:stable-alpine-arm64 as web +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories +# 设置工作目录 +WORKDIR /usr/share/nginx/html +# 设置环境变量 +ENV NODE_ENV production +# 将构建的文件从上一阶段复制到当前镜像中 +COPY --from=web-build /app/apps/web/dist . +# 删除默认的nginx配置文件并添加自定义配置 +RUN rm /etc/nginx/conf.d/default.conf +COPY apps/web/nginx.conf /etc/nginx/conf.d +# 添加 entrypoint 脚本,并确保其可执行 +COPY apps/web/entrypoint.sh /usr/bin/ +RUN chmod +x /usr/bin/entrypoint.sh +# 安装 envsubst 以支持环境变量替换 +RUN apk add --no-cache gettext +# 暴露 80 端口 +EXPOSE 80 + +CMD ["/usr/bin/entrypoint.sh"] + + +# 使用 Nginx 的 Alpine 版本作为基础镜像 +FROM nginx:stable-alpine-arm64 as nginx + +# 替换 Alpine 的软件源为阿里云镜像 +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + +# 设置工作目录 +WORKDIR /usr/share/nginx/html + +# 设置环境变量 +ENV NODE_ENV production + +# 安装 envsubst 和 inotify-tools +RUN apk add --no-cache gettext inotify-tools + +# 创建 /data/uploads 目录 +RUN mkdir -p /data/uploads + +# 暴露 80 端口 +EXPOSE 80 + +# 使用 ARM64 版本的 Firefox 镜像 +FROM linuxserver/firefox:arm64v8-latest + +# 安装中文字体和语言包 +RUN apt-get update && \ + apt-get install -y fonts-noto-cjk language-pack-zh-hans && \ + locale-gen zh_CN.UTF-8 && \ + update-locale LANG=zh_CN.UTF-8 + +# 设置环境变量 +ENV LANG=zh_CN.UTF-8 \ + LANGUAGE=zh_CN:zh \ + LC_ALL=zh_CN.UTF-8 + + +# 创建 Firefox 配置目录 +RUN mkdir -p /root/.mozilla/firefox/default-release + +# 创建 prefs.js 文件并设置 User-Agent +RUN echo -e 'user_pref("general.useragent.override", "MyCustomUserAgent/1.0");' > /root/.mozilla/firefox/default-release/prefs.js && \ + chmod 644 /root/.mozilla/firefox/default-release/prefs.js +# 继续使用基础镜像的入口点 +ENTRYPOINT ["/init"] + +FROM linuxserver/chromium:arm64v8-latest + +# 安装中文字体包 +RUN apt-get update && apt-get install -y \ + fonts-noto-cjk \ + fonts-noto-cjk-extra \ + && rm -rf /var/lib/apt/lists/* \ + && fc-cache -f -v + +# 设置语言环境 +ENV LANG=zh_CN.UTF-8 \ + LANGUAGE=zh_CN:zh \ + LC_ALL=zh_CN.UTF-8 + + +ENTRYPOINT ["/init"] \ No newline at end of file diff --git a/apps/web/src/app/main/devicepage/devicemodal/page.tsx b/apps/web/src/app/main/devicepage/devicemodal/page.tsx index 67e2e16..d481c72 100755 --- a/apps/web/src/app/main/devicepage/devicemodal/page.tsx +++ b/apps/web/src/app/main/devicepage/devicemodal/page.tsx @@ -93,7 +93,7 @@ export default function DeviceModal() { deviceId, }); - console.log(`文件 ${fileId} 关联成功`); + console.log(`文件 ${fileId} 关联create成功`); } catch (error) { console.error(`文件 ${fileId} 关联失败:`, error); } diff --git a/config/nginx/conf.d/web.conf b/config/nginx/conf.d/web.conf index f01762c..adcfb27 100755 --- a/config/nginx/conf.d/web.conf +++ b/config/nginx/conf.d/web.conf @@ -2,7 +2,7 @@ server { # 监听80端口 listen 80; # 服务器域名/IP地址,使用环境变量 - server_name 192.168.28.194; + server_name 192.168.105.14; # 基础性能优化配置 # 启用tcp_nopush以优化数据发送 @@ -100,7 +100,7 @@ server { # 仅供内部使用 internal; # 代理到认证服务 - proxy_pass http://192.168.28.194:3000/auth/file; + proxy_pass http://192.168.105.14:3000/auth/file; # 请求优化:不传递请求体 proxy_pass_request_body off; diff --git a/package-lock.json b/package-lock.json old mode 100644 new mode 100755 diff --git a/packages/common/prisma/schema.prisma b/packages/common/prisma/schema.prisma index 278275c..e02611c 100755 --- a/packages/common/prisma/schema.prisma +++ b/packages/common/prisma/schema.prisma @@ -19,7 +19,6 @@ model Taxonomy { terms Term[] objectType String[] @map("object_type") order Float? @map("order") - @@index([order, deletedAt]) @@map("taxonomy") } @@ -30,6 +29,7 @@ model Term { taxonomy Taxonomy? @relation(fields: [taxonomyId], references: [id]) taxonomyId String? @map("taxonomy_id") order Float? @map("order") + description String? parentId String? @map("parent_id") parent Term? @relation("ChildParent", fields: [parentId], references: [id], onDelete: Cascade) @@ -44,6 +44,7 @@ model Term { createdBy String? @map("created_by") depts Department[] @relation("department_term") hasChildren Boolean? @default(false) @map("has_children") + device Device[] @relation("DeviceTerm") @@index([name]) // 对name字段建立索引,以加快基于name的查找速度 @@index([parentId]) // 对parentId字段建立索引,以加快基于parentId的查找速度 @@ -227,7 +228,7 @@ model Device { updatedAt DateTime @updatedAt @map("updated_at") deletedAt DateTime? @map("deleted_at") resources Resource[] @relation("DeviceResources") - + terms Term[] @relation("DeviceTerm") @@index([deptId]) @@index([systemType]) @@index([deviceType]) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml old mode 100644 new mode 100755