qbin / Dockerfile
quickbin's picture
Upload folder using huggingface_hub
5a399c4 verified
# -------- 基础镜像 --------
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}'