Create Dockerfile
Browse files- 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"]
|