mira-app-server 1.0.9 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.dockerignore CHANGED
@@ -1,79 +1,91 @@
1
- # Node modules 和包管理器文件
2
- node_modules
3
- npm-debug.log*
4
- yarn-debug.log*
5
- yarn-error.log*
6
- .npm
7
- .yarn-integrity
8
-
9
- # 构建输出(会在容器内重新构建)
10
- dist
11
- build
12
-
13
- # 源码文件(除了src目录)
14
- *.ts
15
- !src/**/*.ts
16
-
17
- # 测试相关
18
- test
19
- coverage
20
- .nyc_output
21
-
22
- # 开发工具配置
23
- .vscode
24
- .idea
25
- *.swp
26
- *.swo
27
- *~
28
-
29
- # Git相关
30
- .git
31
- .gitignore
32
- .gitattributes
33
-
34
- # 环境配置
35
- .env
36
- .env.local
37
- .env.*.local
38
-
39
- # 日志文件
40
- logs
41
- *.log
42
-
43
- # 临时文件
44
- .tmp
45
- .temp
46
- temp
47
- *.tmp
48
-
49
- # OS生成的文件
50
- .DS_Store
51
- .DS_Store?
52
- ._*
53
- .Spotlight-V100
54
- .Trashes
55
- ehthumbs.db
56
- Thumbs.db
57
-
58
- # Docker相关
59
- Dockerfile*
60
- docker-compose*
61
- .dockerignore
62
- *.tar
63
-
64
- # 数据库文件
65
- *.db
66
- *.sqlite
67
-
68
- # 文档
69
- *.md
70
- README*
71
-
72
- # 脚本文件
73
- *.bat
74
- *.sh
75
-
76
- # 其他项目目录(如果不需要)
77
- tools
78
- data
1
+ # Node modules 和包管理器文件
2
+ node_modules
3
+ npm-debug.log*
4
+ yarn-debug.log*
5
+ yarn-error.log*
6
+ .npm
7
+ .yarn-integrity
8
+
9
+ # 构建输出(会在容器内重新构建)
10
+ dist
11
+ build
12
+
13
+ # Docker 相关文件
14
+ Dockerfile*
15
+ .dockerignore
16
+ docker-build*.sh
17
+ docker-build*.bat
18
+ *.tar
19
+
20
+ # 测试相关
21
+ test
22
+ coverage
23
+ .nyc_output
24
+
25
+ # 开发工具配置
26
+ .vscode
27
+ .idea
28
+ *.swp
29
+ *.swo
30
+ *~
31
+
32
+ # Git相关
33
+ .git
34
+ .gitignore
35
+ .gitattributes
36
+
37
+ # 环境配置
38
+ .env
39
+ .env.local
40
+ .env.*.local
41
+
42
+ # 日志文件
43
+ logs
44
+ *.log
45
+
46
+ # 临时文件
47
+ .tmp
48
+ .temp
49
+ temp
50
+ *.tmp
51
+
52
+ # OS生成的文件
53
+ .DS_Store
54
+ Thumbs.db
55
+
56
+ # 文档
57
+ README.md
58
+ *.md
59
+
60
+ # 其他不需要的文件
61
+ *.bat
62
+ *.ps1
63
+ .DS_Store?
64
+ ._*
65
+ .Spotlight-V100
66
+ .Trashes
67
+ ehthumbs.db
68
+ Thumbs.db
69
+
70
+ # Docker相关
71
+ Dockerfile*
72
+ docker-compose*
73
+ .dockerignore
74
+ *.tar
75
+
76
+ # 数据库文件
77
+ *.db
78
+ *.sqlite
79
+
80
+ # 文档
81
+ *.md
82
+ README*
83
+
84
+ # 脚本文件
85
+ *.bat
86
+ *.sh
87
+
88
+ # 其他项目目录(如果不需要)
89
+ tools
90
+ data
79
91
  plugins
package/Dockerfile CHANGED
@@ -1,79 +1,79 @@
1
- # 多阶段构建 - 构建阶段
2
- FROM node:20-alpine AS builder
1
+ # 使用Node.js官方镜像作为基础
2
+ FROM node:20-alpine
3
3
 
4
- # 安装构建依赖
4
+ # 安装构建依赖和 FFmpeg(用于编译native modules如sqlite3)
5
5
  RUN apk add --no-cache \
6
6
  python3 \
7
7
  py3-setuptools \
8
8
  make \
9
9
  g++ \
10
+ sqlite \
10
11
  sqlite-dev \
11
- && rm -rf /var/cache/apk/*
12
-
13
- # 设置环境变量
14
- ENV SETUPTOOLS_USE_DISTUTILS=stdlib
12
+ ffmpeg \
13
+ ffmpeg-dev
15
14
 
16
15
  # 创建工作目录
17
16
  WORKDIR /app
18
17
 
19
- # 复制package.json和package-lock.json(利用Docker缓存)
20
- COPY package*.json ./
21
-
22
- # 安装所有依赖(开发和生产)
23
- RUN npm ci && npm cache clean --force
18
+ # 首先复制根目录的 package.json 和相关配置文件
19
+ COPY packages/package*.json ./packages/
20
+ COPY packages/mira-server/package*.json ./packages/mira-server/
21
+ COPY packages/mira-core/package*.json ./packages/mira-core/
22
+ COPY packages/mira-storage-sqlite/package*.json ./packages/mira-storage-sqlite/
24
23
 
25
- # 复制源代码和配置文件
26
- COPY src/ ./src/
24
+ # 复制 tsconfig 和其他配置文件
27
25
  COPY tsconfig.json ./
26
+ COPY packages/mira-server/tsconfig.json ./packages/mira-server/
27
+ COPY packages/mira-core/tsconfig.json ./packages/mira-core/
28
+ COPY packages/mira-storage-sqlite/tsconfig.json ./packages/mira-storage-sqlite/
28
29
 
29
- # 构建项目
30
- RUN npm run build && \
31
- # 删除开发依赖
32
- npm prune --production && \
33
- # 清理构建缓存
34
- rm -rf /tmp/* /root/.npm
30
+ # 复制源代码
31
+ COPY packages/mira-core/src ./packages/mira-core/src
32
+ COPY packages/mira-server/src ./packages/mira-server/src
33
+ COPY packages/mira-storage-sqlite/src ./packages/mira-storage-sqlite/src
35
34
 
36
- # 多阶段构建 - 运行阶段
37
- FROM node:20-alpine AS runtime
35
+ # 复制插件目录(如果存在)
36
+ COPY plugins ./plugins
38
37
 
39
- # 只安装运行时必需的系统依赖
40
- RUN apk add --no-cache \
41
- sqlite \
42
- ffmpeg \
43
- && rm -rf /var/cache/apk/*
38
+ # 设置环境变量修复distutils问题并安装依赖
39
+ ENV SETUPTOOLS_USE_DISTUTILS=stdlib
40
+ ENV FFMPEG_PATH=/usr/bin/ffmpeg
41
+ ENV FFPROBE_PATH=/usr/bin/ffprobe
44
42
 
45
- # 设置环境变量
46
- ENV NODE_ENV=production \
47
- FFMPEG_PATH=/usr/bin/ffmpeg \
48
- FFPROBE_PATH=/usr/bin/ffprobe
43
+ # 清理现有的node_modules和package-lock.json(如果存在)
44
+ RUN rm -rf packages/*/node_modules packages/*/package-lock.json
49
45
 
50
- # 创建非root用户
51
- RUN addgroup -g 1001 -S nodejs && \
52
- adduser -S mira -u 1001
46
+ # 先安装根目录的依赖
47
+ WORKDIR /app/packages
48
+ RUN npm install
53
49
 
54
- # 创建工作目录并设置权限
55
- WORKDIR /app
56
- RUN chown mira:nodejs /app
50
+ # 安装并构建 mira-core
51
+ WORKDIR /app/packages/mira-core
52
+ RUN npm install
53
+ RUN npm run build
57
54
 
58
- # 切换到非root用户
59
- USER mira
55
+ # 安装并构建 mira-storage-sqlite
56
+ WORKDIR /app/packages/mira-storage-sqlite
57
+ RUN npm install
58
+ RUN npm run build
60
59
 
61
- # 复制package.json
62
- COPY --chown=mira:nodejs package*.json ./
60
+ # 安装并构建 mira-server
61
+ WORKDIR /app/packages/mira-server
62
+ RUN npm install
63
+ RUN npm run build
63
64
 
64
- # 从构建阶段复制node_modules(只包含生产依赖)
65
- COPY --from=builder --chown=mira:nodejs /app/node_modules ./node_modules
65
+ # 验证 FFmpeg 安装
66
+ RUN ffmpeg -version && ffprobe -version
66
67
 
67
- # 从构建阶段复制编译后的文件
68
- COPY --from=builder --chown=mira:nodejs /app/dist ./dist
68
+ # 清理构建依赖以减小镜像大小(保留 ffmpeg)
69
+ RUN apk del python3 make g++ ffmpeg-dev
69
70
 
70
- # 健康检查(可选)
71
- HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
72
- CMD node -e "console.log('Health check')" || exit 1
71
+ # 设置工作目录为 mira-server
72
+ WORKDIR /app/packages/mira-server
73
73
 
74
74
  # 暴露端口
75
75
  EXPOSE 3000
76
76
  EXPOSE 8081
77
77
 
78
- # 启动命令
79
- CMD ["node", "dist/index.js"]
78
+ # 启动命令(使用JSON格式)
79
+ CMD ["npm", "start"]
@@ -0,0 +1,80 @@
1
+ # 多阶段构建的改进版Dockerfile
2
+ FROM node:20-alpine as builder
3
+
4
+ # 安装构建依赖
5
+ RUN apk add --no-cache \
6
+ python3 \
7
+ py3-setuptools \
8
+ make \
9
+ g++
10
+
11
+ # 设置工作目录
12
+ WORKDIR /app
13
+
14
+ # 复制根目录的依赖文件
15
+ COPY package*.json ./
16
+ COPY packages/package.json ./packages/
17
+ COPY packages/mira-core/package*.json ./packages/mira-core/
18
+ COPY packages/mira-server/package*.json ./packages/mira-server/
19
+ COPY packages/mira-storage-sqlite/package*.json ./packages/mira-storage-sqlite/
20
+
21
+ # 复制依赖切换脚本
22
+ COPY dependency-*.json ./
23
+ COPY switch-dependencies.js ./
24
+
25
+ # 复制源代码
26
+ COPY packages/mira-core/src ./packages/mira-core/src
27
+ COPY packages/mira-core/tsconfig.json ./packages/mira-core/
28
+ COPY packages/mira-server/src ./packages/mira-server/src
29
+ COPY packages/mira-server/tsconfig.json ./packages/mira-server/
30
+ COPY packages/mira-storage-sqlite/src ./packages/mira-storage-sqlite/src
31
+ COPY packages/mira-storage-sqlite/tsconfig.json ./packages/mira-storage-sqlite/
32
+ COPY tsconfig.json ./
33
+
34
+ # 安装所有依赖并构建
35
+ RUN cd packages && npm install
36
+ RUN cd packages && npm run build:core
37
+ RUN cd packages && npm run build:storage
38
+ RUN cd packages && npm run build:server
39
+
40
+ # 生产阶段
41
+ FROM node:20-alpine
42
+
43
+ # 安装运行时依赖
44
+ RUN apk add --no-cache \
45
+ sqlite \
46
+ ffmpeg
47
+
48
+ # 设置环境变量
49
+ ENV SETUPTOOLS_USE_DISTUTILS=stdlib
50
+ ENV FFMPEG_PATH=/usr/bin/ffmpeg
51
+ ENV FFPROBE_PATH=/usr/bin/ffprobe
52
+
53
+ # 创建应用用户
54
+ RUN addgroup -g 1001 -S nodejs
55
+ RUN adduser -S nodejs -u 1001
56
+
57
+ # 设置工作目录
58
+ WORKDIR /app
59
+
60
+ # 复制构建产物和运行时需要的文件
61
+ COPY --from=builder --chown=nodejs:nodejs /app/packages/mira-server/dist ./dist
62
+ COPY --from=builder --chown=nodejs:nodejs /app/packages/mira-server/package.json ./package.json
63
+ COPY --from=builder --chown=nodejs:nodejs /app/packages/mira-server/node_modules ./node_modules
64
+
65
+ # 验证 FFmpeg 安装
66
+ RUN ffmpeg -version
67
+
68
+ # 切换到非root用户
69
+ USER nodejs
70
+
71
+ # 暴露端口
72
+ EXPOSE 3000
73
+ EXPOSE 8081
74
+
75
+ # 健康检查
76
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
77
+ CMD node -e "require('http').get('http://localhost:3000/health', (res) => { process.exit(res.statusCode === 200 ? 0 : 1) }).on('error', () => process.exit(1))"
78
+
79
+ # 启动命令
80
+ CMD ["node", "dist/index.js"]
package/docker-build.sh CHANGED
@@ -1,37 +1,37 @@
1
- #!/bin/bash
2
-
3
- # Docker 构建脚本
4
- # 该脚本将处理插件依赖并构建 Docker 镜像
5
-
6
- echo "开始构建 Docker 镜像..."
7
-
8
- # 清理之前的构建
9
- echo "清理之前的构建..."
10
- docker rmi mira_server:latest 2>/dev/null || true
11
-
12
- # 构建 Docker 镜像
13
- echo "构建 Docker 镜像..."
14
- docker build -t mira_server:latest .
15
-
16
- if [ $? -eq 0 ]; then
17
- echo "Docker 镜像构建成功!"
18
- echo "保存 Docker 镜像到 mira_server.tar..."
19
- docker save -o mira_server.tar mira_server:latest
20
- echo "Docker 镜像已保存到 mira_server.tar"
21
- read -p "是否启动 Docker 容器?(y/n): " start_container
22
- if [[ "$start_container" =~ ^[Yy]$ ]]; then
23
- echo "启动 Docker 容器..."
24
- docker run -d \
25
- -p 3000:3000 \
26
- -p 8081:8081 \
27
- -v /volume1/文件共享:/library \
28
- --restart=always \
29
- --name mira_server \
30
- mira_server
31
- else
32
- echo "已跳过启动 Docker 容器。"
33
- fi
34
- else
35
- echo "Docker 镜像构建失败!"
36
- exit 1
37
- fi
1
+ #!/bin/bash
2
+
3
+ # Docker 构建脚本
4
+ # 该脚本将处理插件依赖并构建 Docker 镜像
5
+
6
+ echo "开始构建 Docker 镜像..."
7
+
8
+ # 清理之前的构建
9
+ echo "清理之前的构建..."
10
+ docker rmi mira_server:latest 2>/dev/null || true
11
+
12
+ # 构建 Docker 镜像
13
+ echo "构建 Docker 镜像..."
14
+ docker build -t mira_server:latest .
15
+
16
+ if [ $? -eq 0 ]; then
17
+ echo "Docker 镜像构建成功!"
18
+ echo "保存 Docker 镜像到 mira_server.tar..."
19
+ docker save -o mira_server.tar mira_server:latest
20
+ echo "Docker 镜像已保存到 mira_server.tar"
21
+ read -p "是否启动 Docker 容器?(y/n): " start_container
22
+ if [[ "$start_container" =~ ^[Yy]$ ]]; then
23
+ echo "启动 Docker 容器..."
24
+ docker run -d \
25
+ -p 3000:3000 \
26
+ -p 8081:8081 \
27
+ -v /volume1/文件共享:/library \
28
+ --restart=always \
29
+ --name mira_server \
30
+ mira_server
31
+ else
32
+ echo "已跳过启动 Docker 容器。"
33
+ fi
34
+ else
35
+ echo "Docker 镜像构建失败!"
36
+ exit 1
37
+ fi
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mira-app-server",
3
- "version": "1.0.9",
3
+ "version": "1.0.12",
4
4
  "description": "Mira Server - standalone server application using mira-core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -30,6 +30,6 @@
30
30
  "typescript": "^5.3.3"
31
31
  },
32
32
  "dependencies": {
33
- "mira-app-core": "^1.0.12"
33
+ "mira-app-core": "file://Users/Zhuanz/mira_typescript/packages/mira-core/"
34
34
  }
35
35
  }
@@ -1,52 +0,0 @@
1
- # 极端优化版本 - 使用 distroless 镜像
2
- # 这个版本会产生最小的镜像,但调试会更困难
3
-
4
- # 构建阶段
5
- FROM node:20-alpine AS builder
6
-
7
- # 安装构建依赖
8
- RUN apk add --no-cache \
9
- python3 \
10
- py3-setuptools \
11
- make \
12
- g++ \
13
- sqlite-dev \
14
- && rm -rf /var/cache/apk/*
15
-
16
- ENV SETUPTOOLS_USE_DISTUTILS=stdlib
17
-
18
- WORKDIR /app
19
-
20
- # 复制并安装依赖
21
- COPY package*.json ./
22
- RUN npm ci && npm cache clean --force
23
-
24
- # 复制源码并构建
25
- COPY src/ ./src/
26
- COPY tsconfig.json ./
27
- RUN npm run build
28
-
29
- # 只保留生产依赖
30
- RUN npm prune --production && \
31
- rm -rf /tmp/* /root/.npm
32
-
33
- # 最终运行阶段 - 使用 distroless
34
- FROM gcr.io/distroless/nodejs20-debian12:latest
35
-
36
- # 设置环境变量
37
- ENV NODE_ENV=production
38
-
39
- # 创建工作目录
40
- WORKDIR /app
41
-
42
- # 从构建阶段复制必要文件
43
- COPY --from=builder /app/node_modules ./node_modules
44
- COPY --from=builder /app/dist ./dist
45
- COPY --from=builder /app/package.json ./package.json
46
-
47
- # 暴露端口
48
- EXPOSE 3000
49
- EXPOSE 8081
50
-
51
- # 启动命令(distroless 不支持shell,所以直接使用node)
52
- CMD ["dist/index.js"]
@@ -1,64 +0,0 @@
1
- @echo off
2
- setlocal enabledelayedexpansion
3
-
4
- REM Docker 镜像优化构建脚本 (Windows版本)
5
- REM 使用该脚本来构建更小的 Docker 镜像
6
-
7
- set IMAGE_NAME=mira-server
8
- set TAG=latest
9
-
10
- echo 🔨 开始构建优化的 Docker 镜像...
11
-
12
- REM 先检查网络连接
13
- echo 🔍 检查 Docker Hub 连接...
14
- docker pull hello-world:latest > nul 2>&1
15
- if !errorlevel! neq 0 (
16
- echo ⚠️ Docker Hub 连接有问题,将使用备用方案
17
- set USE_CN_MIRROR=1
18
- ) else (
19
- echo ✅ Docker Hub 连接正常
20
- set USE_CN_MIRROR=0
21
- )
22
-
23
- echo.
24
- if !USE_CN_MIRROR! equ 1 (
25
- echo 🇨🇳 使用国内镜像源构建...
26
- docker build -f Dockerfile.distroless-cn -t "%IMAGE_NAME%:%TAG%" .
27
- ) else (
28
- echo 🌍 使用标准镜像构建...
29
- docker build --no-cache --compress -t "%IMAGE_NAME%:%TAG%" .
30
- )
31
-
32
- if !errorlevel! neq 0 (
33
- echo ❌ 构建失败!
34
- echo.
35
- echo 🔧 故障排除建议:
36
- echo 1. 运行 docker-network-check.bat 检查网络
37
- echo 2. 尝试使用: docker build -f Dockerfile.distroless-cn -t %IMAGE_NAME%:%TAG% .
38
- echo 3. 或配置 Docker 镜像加速器
39
- pause
40
- exit /b 1
41
- )
42
-
43
- echo.
44
- echo 📊 镜像大小统计:
45
- docker images "%IMAGE_NAME%:%TAG%" --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
46
-
47
- echo.
48
- echo 🔍 镜像层分析:
49
- docker history "%IMAGE_NAME%:%TAG%" --human --format "table {{.CreatedBy}}\t{{.Size}}"
50
-
51
- echo.
52
- echo ✅ 构建完成!
53
-
54
- REM 可选:移除悬挂镜像以清理空间
55
- echo.
56
- echo 🧹 清理悬挂镜像...
57
- docker image prune -f
58
-
59
- echo.
60
- echo 💡 提示:
61
- echo - 使用 'docker run -p 3000:3000 -p 8081:8081 %IMAGE_NAME%:%TAG%' 运行容器
62
- echo - 使用 'docker scout cves %IMAGE_NAME%:%TAG%' 检查安全漏洞(如果安装了 Docker Scout)
63
-
64
- pause
@@ -1,36 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Docker 镜像优化构建脚本
4
- # 使用该脚本来构建更小的 Docker 镜像
5
-
6
- set -e
7
-
8
- # 镜像名称
9
- IMAGE_NAME="mira-server"
10
- TAG="latest"
11
-
12
- echo "🔨 开始构建优化的 Docker 镜像..."
13
-
14
- # 构建镜像
15
- docker build \
16
- --no-cache \
17
- --compress \
18
- --squash \
19
- -t "${IMAGE_NAME}:${TAG}" \
20
- .
21
-
22
- echo "📊 镜像大小统计:"
23
- docker images "${IMAGE_NAME}:${TAG}" --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
24
-
25
- echo "🔍 镜像层分析:"
26
- docker history "${IMAGE_NAME}:${TAG}" --human --format "table {{.CreatedBy}}\t{{.Size}}"
27
-
28
- echo "✅ 构建完成!"
29
-
30
- # 可选:移除悬挂镜像以清理空间
31
- echo "🧹 清理悬挂镜像..."
32
- docker image prune -f
33
-
34
- echo "💡 提示:"
35
- echo "- 使用 'docker run -p 3000:3000 -p 8081:8081 ${IMAGE_NAME}:${TAG}' 运行容器"
36
- echo "- 使用 'docker scout cves ${IMAGE_NAME}:${TAG}' 检查安全漏洞(如果安装了 Docker Scout)"