fxlinux commited on
Commit
e8cc2e9
·
verified ·
1 Parent(s): d43afb0

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +19 -6
Dockerfile CHANGED
@@ -1,18 +1,31 @@
1
  FROM denoland/deno:latest
2
 
3
  WORKDIR /app
4
- # 设置环境变量
 
5
  ENV DENO_NO_UPDATE_CHECK=1
6
  ENV DENO_NO_PROMPT=1
7
 
8
- # 确保清理任何现有的 node_modules
9
- RUN rm -rf node_modules .deno 2>/dev/null || true
10
- # 再次清理,以防万一(虽然通常前面的清理已足够)
11
- # 缓存依赖项
12
- RUN deno cache --reload --quiet main.ts
13
  COPY . .
14
 
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
  EXPOSE 8000
17
 
 
18
  CMD ["deno", "run", "--allow-net", "--allow-env", "--node-modules-dir", "main.ts"]
 
1
  FROM denoland/deno:latest
2
 
3
  WORKDIR /app
4
+
5
+ # 设置环境变量,阻止 Deno 更新检查和交互式提示
6
  ENV DENO_NO_UPDATE_CHECK=1
7
  ENV DENO_NO_PROMPT=1
8
 
9
+ # 在复制文件之前就进行清理,确保一个非常干净的环境
10
+ # 2>/dev/null || true 确保即使目录不存在也不会报错中断
11
+ RUN rm -rf /app/node_modules /app/node_modules/.deno /deno-dir 2>/dev/null || true
12
+
 
13
  COPY . .
14
 
15
+ # 关键步骤:更改 /app 目录及其内容的权限,使其属于 'deno' 用户和组
16
+ # Deno 镜像通常会有一个名为 'deno' 的用户和组
17
+ RUN chown -R deno:deno /app
18
+
19
+ # 再次清理,以防万一(虽然通常前面的清理已足够,这里可省略,但保留也无妨)
20
+ RUN rm -rf node_modules /app/node_modules/.deno 2>/dev/null || true
21
+
22
+ # 关键步骤:将后续的命令切换到 'deno' 用户执行,确保权限正确
23
+ USER deno
24
+
25
+ # 缓存依赖项
26
+ RUN deno cache --reload --quiet --node-modules-dir main.ts
27
 
28
  EXPOSE 8000
29
 
30
+ # 运行 Deno 应用
31
  CMD ["deno", "run", "--allow-net", "--allow-env", "--node-modules-dir", "main.ts"]