fxlinux commited on
Commit
6cd1bef
·
verified ·
1 Parent(s): 92a2da4

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +15 -16
Dockerfile CHANGED
@@ -6,30 +6,29 @@ WORKDIR /app
6
  ENV DENO_NO_UPDATE_CHECK=1
7
  ENV DENO_NO_PROMPT=1
8
 
9
- # 清理 /deno-dir 并在其上设置权限
10
- # 理论上,即使是 root 也会遇到权限问题,但我们还是尝试一下
11
- # 如果这一行再次报错,我们可以考虑移除它,直接让 root 用户写入默认的 /deno-dir
12
- # 但 Deno 可能会抱怨 /deno-dir 的所有者不是当前用户,所以最好还是尝试 chown
13
- RUN mkdir -p /deno-dir && chown -R deno:deno /deno-dir || true # 添加 || true 忽略错误,确保流程继续
14
 
15
- # 清理 /app 目录下的 Deno 相关目录
16
- # 因为我们不 chown /app 了,所以这些 rm 命令可能仍然以 root 运行
17
- RUN rm -rf /app/node_modules /app/node_modules/.deno 2>/dev/null || true
 
18
 
 
19
  COPY . .
20
 
21
- # 注意:我们不再尝试 chown /app,因为这会导致权限错误。
22
- # 这意味着 /app 下的文件(包括 main.ts)将由 root 用户拥有。
23
 
24
- # 关键步骤:以 root 用户执行 deno cache 命令
25
- # 这样它就有权限在 /app/node_modules/.deno 或 /deno-dir 中写入
26
  RUN deno cache --reload --quiet --node-modules-dir main.ts
27
 
28
  EXPOSE 8000
29
 
30
- # 运行时,仍推荐以非 root 用户运行 Deno 应用,增加安全性
31
- # 但如果运行时也遇到权限问题,可能需要考虑将 CMD 也保持为 root 用户运行。
32
- # 考虑到你的应用可能需要写入日志或临时文件,以 root 运行 CMD 可能是最后的手段。
33
- # 先尝试保持 USER deno 来运行 CMD。
34
  USER deno
35
  CMD ["deno", "run", "--allow-net", "--allow-env", "--node-modules-dir", "main.ts"]
 
6
  ENV DENO_NO_UPDATE_CHECK=1
7
  ENV DENO_NO_PROMPT=1
8
 
9
+ # 关键改动1: 提前创建 /deno-dir 并尝试设置权限。
10
+ # 即使 chown 失败 (|| true 忽略错误),也能确保目录存在,并让 root 用户能写入。
11
+ RUN mkdir -p /deno-dir && chown -R deno:deno /deno-dir || true
 
 
12
 
13
+ # 关键改动2: 极其彻底地清理 WORKDIR,确保没有残留。
14
+ # 这会删除 /app 目录下的所有内容,提供一个完全干净的环境。
15
+ # 请注意,这会删除所有文件,包括隐藏文件和目录。
16
+ RUN rm -rf /app/* /app/.* 2>/dev/null || true
17
 
18
+ # 复制你的应用文件到 /app 目录。
19
  COPY . .
20
 
21
+ # 注意:我们不再尝试 chown /app 整个目录,因为这在 Hugging Face Spaces 上会导致权限错误。
22
+ # 这意味着 /app 下的应用程序文件(如 main.ts)将由 root 用户拥有。
23
 
24
+ # 关键步骤:以 root 用户执行 deno cache 命令。
25
+ # 这样它就有权限在 /app/node_modules/.deno 或 /deno-dir 中写入所需的依赖。
26
  RUN deno cache --reload --quiet --node-modules-dir main.ts
27
 
28
  EXPOSE 8000
29
 
30
+ # 运行时,将用户切换回 'deno'。
31
+ # 这增加了运行时的安全性,因为应用程序将以非 root 权限运行。
32
+ # 如果你的应用在运行时需要写入由 root 拥有的文件,可能需要移除此行。
 
33
  USER deno
34
  CMD ["deno", "run", "--allow-net", "--allow-env", "--node-modules-dir", "main.ts"]