File size: 1,050 Bytes
f373e34
 
 
e8cc2e9
 
4b8300f
 
f373e34
e8cc2e9
 
 
 
d43afb0
 
e8cc2e9
 
 
 
 
 
 
 
 
 
 
 
f373e34
 
 
e8cc2e9
f373e34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
FROM denoland/deno:latest

WORKDIR /app

# 设置环境变量,阻止 Deno 更新检查和交互式提示
ENV DENO_NO_UPDATE_CHECK=1
ENV DENO_NO_PROMPT=1

# 在复制文件之前就进行清理,确保一个非常干净的环境
# 2>/dev/null || true 确保即使目录不存在也不会报错中断
RUN rm -rf /app/node_modules /app/node_modules/.deno /deno-dir 2>/dev/null || true

COPY . .

# 关键步骤:更改 /app 目录及其内容的权限,使其属于 'deno' 用户和组
# Deno 镜像通常会有一个名为 'deno' 的用户和组
RUN chown -R deno:deno /app

# 再次清理,以防万一(虽然通常前面的清理已足够,这里可省略,但保留也无妨)
RUN rm -rf node_modules /app/node_modules/.deno 2>/dev/null || true

# 关键步骤:将后续的命令切换到 'deno' 用户执行,确保权限正确
USER deno 

# 缓存依赖项
RUN deno cache --reload --quiet --node-modules-dir main.ts

EXPOSE 8000

# 运行 Deno 应用
CMD ["deno", "run", "--allow-net", "--allow-env", "--node-modules-dir", "main.ts"]