# -------- 基础镜像 -------- FROM debian:bookworm-slim ENV DEBIAN_FRONTEND=noninteractive \ DENO_INSTALL=/usr/local # 系统依赖 + 安装 Deno + pip依赖 RUN apt-get update -qq && \ apt-get install -y --no-install-recommends \ curl git sqlite3 ca-certificates python3 python3-pip unzip && \ pip3 install --no-cache-dir --break-system-packages requests webdavclient3 && \ curl -fsSL https://deno.land/install.sh | sh && \ ln -s /usr/local/bin/deno /usr/bin/deno && \ apt-get clean && rm -rf /var/lib/apt/lists/* # 新建与 Spaces 运行时一致的普通用户 RUN useradd -m -u 1000 deno USER deno WORKDIR /app ENV HOME=/home/deno \ DENO_DIR=/home/deno/.cache/deno # 拉取 QBin 源码 & 预缓存依赖 RUN git clone --depth=1 https://github.com/Quick-Bin/qbin.git . && \ deno cache --node-modules-dir index.ts # 数据库生成 & 迁移 ENV DB_CLIENT=sqlite \ SQLITE_URL="file:data/qbin_local.db" RUN mkdir -p data && \ sed -i -e 's/"deno"/"no-deno"/' node_modules/@libsql/client/package.json && \ deno task db:generate && \ deno task db:migrate && \ deno task db:push && \ sed -i -e 's/"no-deno"/"deno"/' node_modules/@libsql/client/package.json COPY --chown=deno:deno --chmod=755 sync_data.sh ./sync_data.sh # 运行参数 ENV PORT=8000 EXPOSE 8000 CMD bash -c '\ ./sync_data.sh && \ deno run -NER --allow-ffi --allow-sys --unstable-kv --unstable-broadcast-channel index.ts --port ${PORT:-8000}'