|
|
|
|
|
FROM debian:bookworm-slim |
|
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \ |
|
|
DENO_INSTALL=/usr/local |
|
|
|
|
|
|
|
|
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/* |
|
|
|
|
|
|
|
|
RUN useradd -m -u 1000 deno |
|
|
USER deno |
|
|
WORKDIR /app |
|
|
ENV HOME=/home/deno \ |
|
|
DENO_DIR=/home/deno/.cache/deno |
|
|
|
|
|
|
|
|
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}' |
|
|
|