jamesw853 commited on
Commit
057f283
·
verified ·
1 Parent(s): 1ea9e8a

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +46 -0
Dockerfile ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 选择一个稳定的基础镜像
2
+ FROM ubuntu:22.04
3
+
4
+ # 设置环境变量,避免安装过程中的交互式提示
5
+ ENV DEBIAN_FRONTEND=noninteractive
6
+ # 设置OpenCode数据目录的环境变量,指向我们将要挂载的持久化存储路径
7
+ ENV OPENCODE_DATA_DIR=/data
8
+
9
+ # 1. 安装系统依赖:curl, git, sudo, ca-certificates等
10
+ RUN apt-get update && apt-get install -y --no-install-recommends \
11
+ curl \
12
+ ca-certificates \
13
+ git \
14
+ openssh-client \
15
+ sudo \
16
+ && rm -rf /var/lib/apt/lists/*
17
+
18
+ # 2. 创建非root用户 (UID 1000 是 Hugging Face Space 的默认用户)
19
+ # 这步是安全关键,避免以root权限运行AI代理,符合安全基线要求[reference:0]
20
+ RUN useradd -m -u 1000 -s /bin/bash user && \
21
+ echo "user ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/user && \
22
+ chmod 0440 /etc/sudoers.d/user
23
+
24
+ # 切换到我们刚创建的非root用户
25
+ USER user
26
+ WORKDIR /home/user
27
+
28
+ # 3. 为git操作预先配置SSH known_hosts,避免首次运行时的交互确认
29
+ RUN mkdir -p /home/user/.ssh && \
30
+ ssh-keyscan -T 5 github.com 2>/dev/null >> /home/user/.ssh/known_hosts || true
31
+
32
+ # 4. 安装OpenCode (官方安装脚本)
33
+ RUN curl -fsSL https://opencode.ai/install | bash
34
+
35
+ # 将OpenCode可执行文件所在目录加入PATH
36
+ ENV PATH="/home/user/.opencode/bin:${PATH}"
37
+
38
+ # 5. 创建数据持久化目录,并赋予user用户权限
39
+ RUN mkdir -p /data && sudo chown -R user:user /data
40
+
41
+ # 设置工作目录,你的项目文件可以放在这里
42
+ WORKDIR /workspace
43
+
44
+ # 6. 设置容器启动命令:以Web服务模式运行OpenCode
45
+ # 必须监听所有网络接口(0.0.0.0),并使用正确的端口参数[reference:1]
46
+ CMD ["opencode", "web", "--hostname", "0.0.0.0", "--port", "7860"]