39 lines
1.5 KiB
Docker
39 lines
1.5 KiB
Docker
# syntax=docker/dockerfile:1
|
|
FROM debian:12-slim AS syslibs
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
libatomic1 libuuid1 libfontconfig1 libxml2 libfribidi0 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
FROM gcr.io/distroless/cc-debian12
|
|
|
|
WORKDIR /app
|
|
|
|
# Shared dynamic libraries needed by Node.js SEA and native addons (canvas, better-sqlite3)
|
|
COPY --from=syslibs /usr/lib/x86_64-linux-gnu/libatomic.so* /usr/lib/x86_64-linux-gnu/
|
|
COPY --from=syslibs /usr/lib/x86_64-linux-gnu/libuuid.so* /usr/lib/x86_64-linux-gnu/
|
|
COPY --from=syslibs /usr/lib/x86_64-linux-gnu/libfontconfig.so* /usr/lib/x86_64-linux-gnu/
|
|
COPY --from=syslibs /usr/lib/x86_64-linux-gnu/libxml2.so* /usr/lib/x86_64-linux-gnu/
|
|
COPY --from=syslibs /usr/lib/x86_64-linux-gnu/libfribidi.so* /usr/lib/x86_64-linux-gnu/
|
|
|
|
# The standalone SEA binary contains Node.js runtime, src/, package.json, and all app logic
|
|
COPY dashback/dist/dashback ./dist/dashback
|
|
|
|
# Only native C++ addon packages required by OS dynamic linker (dlopen)
|
|
COPY dashback/node_modules/better-sqlite3 ./node_modules/better-sqlite3
|
|
COPY dashback/node_modules/canvas ./node_modules/canvas
|
|
COPY dashback/node_modules/@img ./node_modules/@img
|
|
COPY dashback/node_modules/sharp ./node_modules/sharp
|
|
|
|
# Set production defaults: port 4202
|
|
ENV NODE_ENV=production \
|
|
HOST=0.0.0.0 \
|
|
PORT=4202 \
|
|
HTTPS_PORT=0 \
|
|
SQLITE_PATH=/app/data/dash.db \
|
|
STORAGE_DIR=/app/data/storage \
|
|
BACKUP_DIR=/app/data/backups
|
|
|
|
EXPOSE 4202
|
|
|
|
CMD ["./dist/dashback"]
|