mira-app-server 1.0.9 → 1.0.13
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 +90 -78
- package/Dockerfile +50 -50
- package/Dockerfile.optimized +80 -0
- package/docker-build.sh +37 -37
- package/package.json +2 -2
- package/Dockerfile.distroless +0 -52
- package/docker-build-optimized.bat +0 -64
- package/docker-build-optimized.sh +0 -36
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
|
-
#
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
.
|
|
54
|
-
.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
*.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
*.
|
|
75
|
-
|
|
76
|
-
#
|
|
77
|
-
|
|
78
|
-
|
|
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
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
# 设置环境变量
|
|
14
|
-
ENV SETUPTOOLS_USE_DISTUTILS=stdlib
|
|
12
|
+
ffmpeg \
|
|
13
|
+
ffmpeg-dev
|
|
15
14
|
|
|
16
15
|
# 创建工作目录
|
|
17
16
|
WORKDIR /app
|
|
18
17
|
|
|
19
|
-
#
|
|
20
|
-
COPY package*.json ./
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
35
|
+
# 复制插件目录(如果存在)
|
|
36
|
+
COPY plugins ./plugins
|
|
38
37
|
|
|
39
|
-
#
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
# 先安装根目录的依赖
|
|
47
|
+
WORKDIR /app/packages
|
|
48
|
+
RUN npm install
|
|
53
49
|
|
|
54
|
-
#
|
|
55
|
-
WORKDIR /app
|
|
56
|
-
RUN
|
|
50
|
+
# 安装并构建 mira-core
|
|
51
|
+
WORKDIR /app/packages/mira-core
|
|
52
|
+
RUN npm install
|
|
53
|
+
RUN npm run build
|
|
57
54
|
|
|
58
|
-
#
|
|
59
|
-
|
|
55
|
+
# 安装并构建 mira-storage-sqlite
|
|
56
|
+
WORKDIR /app/packages/mira-storage-sqlite
|
|
57
|
+
RUN npm install
|
|
58
|
+
RUN npm run build
|
|
60
59
|
|
|
61
|
-
#
|
|
62
|
-
|
|
60
|
+
# 安装并构建 mira-server
|
|
61
|
+
WORKDIR /app/packages/mira-server
|
|
62
|
+
RUN npm install
|
|
63
|
+
RUN npm run build
|
|
63
64
|
|
|
64
|
-
#
|
|
65
|
-
|
|
65
|
+
# 验证 FFmpeg 安装
|
|
66
|
+
RUN ffmpeg -version && ffprobe -version
|
|
66
67
|
|
|
67
|
-
#
|
|
68
|
-
|
|
68
|
+
# 清理构建依赖以减小镜像大小(保留 ffmpeg)
|
|
69
|
+
RUN apk del python3 make g++ ffmpeg-dev
|
|
69
70
|
|
|
70
|
-
#
|
|
71
|
-
|
|
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 ["
|
|
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.
|
|
3
|
+
"version": "1.0.13",
|
|
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.
|
|
33
|
+
"mira-app-core": "^1.0.15"
|
|
34
34
|
}
|
|
35
35
|
}
|
package/Dockerfile.distroless
DELETED
|
@@ -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)"
|