showme commited on
Commit
cecff81
·
verified ·
1 Parent(s): 8132ec6

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +15 -55
Dockerfile CHANGED
@@ -14,79 +14,39 @@ RUN apk update && apk add --no-cache \
14
  # 安装最新版本的 npm
15
  RUN npm install -g npm@latest
16
 
17
- # 创建一个新的构建阶段,克隆 GitHub 仓库
18
- FROM base AS clone
19
- WORKDIR /usr/src/app
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 /usr/src/app/.pnpm
32
 
33
- # 使用 pnpm 安装依赖,构建应用
34
- RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
 
35
 
36
- # 修改文件权限
37
- RUN chown -R node:node /usr/src/app/node_modules /usr/src/app/.pnpm
38
 
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
47
 
48
- # 部署命令调整为使用克隆的代码
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
66
- ENV HOST="0.0.0.0"
67
- 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
- CMD ["node", "server.js"] # 假设启动命令为 node server.js 或其他你应用需要的启动命令
75
-
76
- # 定义最终使用的 app 阶段
77
- FROM base AS app
78
- COPY --from=build /usr/src/app /app
79
- WORKDIR /app
80
- EXPOSE 4000
81
-
82
- # 环境变量设置
83
- ENV NODE_ENV=production
84
- ENV HOST="0.0.0.0"
85
- ENV SERVER_ORIGIN_URL=""
86
- ENV MAX_REQUEST_PER_MINUTE=200
87
- ENV AUTH_CODE=""
88
- ENV DATABASE_URL=""
89
- ENV CRON_EXPRESSION="0 8 * * *"
90
-
91
- # 执行启动命令
92
- CMD ["node", "server.js"] # 替换为你实际的启动命令
 
14
  # 安装最新版本的 npm
15
  RUN npm install -g npm@latest
16
 
17
+ # 创建构建和运行的基础环境
 
 
 
 
 
18
  FROM base AS build
 
19
  WORKDIR /usr/src/app
20
 
21
+ # 克隆 Git 仓库
22
+ RUN git clone https://github.com/ShowMeTheMoney2023/top.git .
23
+
24
  # 安装 pnpm
25
  RUN npm install -g pnpm
26
 
27
+ # 创建必要的目录
28
+ RUN mkdir -p /usr/src/app/node_modules /usr/src/app/.pnpm /usr/src/app/apps/server/dist
29
 
30
+ # 设置目录权限
31
+ RUN chown -R node:node /usr/src/app/node_modules /usr/src/app/.pnpm /usr/src/app/apps/server/dist
32
+ RUN chmod -R 777 /usr/src/app/node_modules /usr/src/app/.pnpm /usr/src/app/apps/server/dist
33
 
34
+ # 安装依赖
35
+ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
36
 
37
+ # 确保以 node 用户身份执行
38
  USER node
39
 
 
 
 
40
  # 构建应用
41
  RUN pnpm run -r build
42
 
43
+ # 继续进行应用部署
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
  EXPOSE 4000
50
 
51
+ # 启动命令
52
+ CMD ["node", "server.js"] # 假设启动命令为 node server.js