showme commited on
Commit
f86b4e1
·
verified ·
1 Parent(s): 3d9a293

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +14 -45
Dockerfile CHANGED
@@ -5,30 +5,22 @@ FROM node:20-alpine AS base
5
  ENV PNPM_HOME="/pnpm"
6
  ENV PATH="$PNPM_HOME:$PATH"
7
 
8
- # 安装最新的 OpenSSL (默认版本)
9
  RUN apk update && apk add --no-cache \
10
  openssl \
 
11
  && rm -rf /var/cache/apk/*
12
 
13
- # 安装最新版本的 npm
14
  RUN npm install -g npm@latest
 
15
 
16
- # 创建一个新的构建阶段,克隆GitHub仓库
17
- FROM base AS clone
18
- WORKDIR /usr/src/app
19
- RUN apk add --no-cache git
20
- RUN git clone https://github.com/ShowMeTheMoney2023/top.git .
21
-
22
- # 构建应用
23
- FROM base AS build
24
- COPY --from=clone /usr/src/app /usr/src/app
25
  WORKDIR /usr/src/app
26
-
27
- # 安装 pnpm
28
- RUN npm install -g pnpm
29
 
30
  # 创建空的 node_modules 目录,避免权限错误
31
- RUN mkdir -p /usr/src/app/node_modules
32
 
33
  # 使用 pnpm 安装依赖,构建应用
34
  RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
@@ -39,8 +31,11 @@ RUN chown -R node:node /usr/src/app/node_modules /usr/src/app/.pnpm
39
  # 确保以 node 用户身份运行容器
40
  USER node
41
 
42
- # 设置正确的权限
43
- RUN chmod -R 777 /usr/src/app/node_modules /usr/src/app/.pnpm
 
 
 
44
 
45
  # 构建应用
46
  RUN pnpm run -r build
@@ -49,17 +44,8 @@ RUN pnpm run -r build
49
  RUN pnpm deploy --filter=server --prod /usr/src/app
50
  RUN pnpm deploy --filter=server --prod /usr/src/app-sqlite
51
 
52
- # 生成 Prisma 客户端
53
- RUN cd /usr/src/app && pnpm exec prisma generate
54
- RUN cd /usr/src/app-sqlite && rm -rf ./prisma && mv prisma-sqlite prisma && pnpm exec prisma generate
55
-
56
- # 手动安装 Prisma(如果之前的 prisma generate 失败时用)
57
- RUN npm install prisma
58
- RUN npx prisma generate
59
-
60
  # 设置工作目录
61
  WORKDIR /usr/src/app
62
- EXPOSE 4000
63
 
64
  # 环境变量设置
65
  ENV NODE_ENV=production
@@ -68,27 +54,10 @@ ENV SERVER_ORIGIN_URL=""
68
  ENV MAX_REQUEST_PER_MINUTE=200
69
  ENV AUTH_CODE=""
70
  ENV DATABASE_URL=""
71
- ENV CRON_EXPRESSION=""
72
-
73
- # 执行启动脚本
74
- RUN chmod +x ./docker-bootstrap.sh
75
- CMD ["./docker-bootstrap.sh"]
76
 
77
- # 定义最终使用的app阶段
78
- FROM base AS app
79
- COPY --from=build /usr/src/app /app
80
- WORKDIR /app
81
  EXPOSE 4000
82
 
83
- # 环境变量设置
84
- ENV NODE_ENV=production
85
- ENV HOST="0.0.0.0"
86
- ENV SERVER_ORIGIN_URL=""
87
- ENV MAX_REQUEST_PER_MINUTE=200
88
- ENV AUTH_CODE=""
89
- ENV DATABASE_URL=""
90
- ENV CRON_EXPRESSION="0 8 * * *"
91
-
92
  # 执行启动脚本
93
- RUN chmod +x ./docker-bootstrap.sh
94
  CMD ["./docker-bootstrap.sh"]
 
5
  ENV PNPM_HOME="/pnpm"
6
  ENV PATH="$PNPM_HOME:$PATH"
7
 
8
+ # 安装最新的 OpenSSL 和 git
9
  RUN apk update && apk add --no-cache \
10
  openssl \
11
+ git \
12
  && rm -rf /var/cache/apk/*
13
 
14
+ # 安装最新版本的 npm 和 pnpm
15
  RUN npm install -g npm@latest
16
+ RUN npm install -g pnpm
17
 
18
+ # 克隆 GitHub 仓库
 
 
 
 
 
 
 
 
19
  WORKDIR /usr/src/app
20
+ RUN git clone https://github.com/ShowMeTheMoney2023/top.git .
 
 
21
 
22
  # 创建空的 node_modules 目录,避免权限错误
23
+ RUN mkdir -p /usr/src/app/node_modules /usr/src/app/.pnpm
24
 
25
  # 使用 pnpm 安装依赖,构建应用
26
  RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
 
31
  # 确保以 node 用户身份运行容器
32
  USER node
33
 
34
+ # 设置启动脚本权限
35
+ RUN chmod +x ./docker-bootstrap.sh
36
+
37
+ # 生成 Prisma 客户端
38
+ RUN pnpm exec prisma generate
39
 
40
  # 构建应用
41
  RUN pnpm run -r build
 
44
  RUN pnpm deploy --filter=server --prod /usr/src/app
45
  RUN pnpm deploy --filter=server --prod /usr/src/app-sqlite
46
 
 
 
 
 
 
 
 
 
47
  # 设置工作目录
48
  WORKDIR /usr/src/app
 
49
 
50
  # 环境变量设置
51
  ENV NODE_ENV=production
 
54
  ENV MAX_REQUEST_PER_MINUTE=200
55
  ENV AUTH_CODE=""
56
  ENV DATABASE_URL=""
57
+ ENV CRON_EXPRESSION="0 8 * * *"
 
 
 
 
58
 
59
+ # 暴露端口
 
 
 
60
  EXPOSE 4000
61
 
 
 
 
 
 
 
 
 
 
62
  # 执行启动脚本
 
63
  CMD ["./docker-bootstrap.sh"]