Something went wrong. Try again.
A self-hosted household ledger.
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152# Build stage: install dependencies and produce the adapter-node output.FROM denoland/deno:2.9.3 AS buildWORKDIR /appENV DENO_NO_UPDATE_CHECK=1
COPY package.json deno.json deno.lock ./RUN deno install
COPY . .RUN deno task build
# Runtime stage (alpine keeps the image small). The adapter-node output# resolves npm packages at runtime, so node_modules and the manifests come# along; dev tooling does not run.FROM denoland/deno:alpine-2.9.3WORKDIR /appENV DENO_NO_UPDATE_CHECK=1
# Build-time metadata, supplied by `deno task image` (ChronVer version + git).ARG VERSION=0.0.0ARG CREATEDARG REVISION
# OCI image metadata. Without these, registries inherit and display the base# Deno image's labels instead of Quantum's. See https://specs.opencontainers.orgLABEL org.opencontainers.image.title="Quantum"LABEL org.opencontainers.image.description="Personal finance app: SvelteKit + Deno + SQLite with automatic SimpleFIN account sync."LABEL org.opencontainers.image.source="https://tangled.org/did:plc:tpgm6lapok6izkduegieg57j"LABEL org.opencontainers.image.url="https://tangled.org/did:plc:tpgm6lapok6izkduegieg57j"LABEL org.opencontainers.image.licenses="AGPL-3.0-or-later"LABEL org.opencontainers.image.authors="Graham Barber"LABEL org.opencontainers.image.version="${VERSION}"LABEL org.opencontainers.image.created="${CREATED}"LABEL org.opencontainers.image.revision="${REVISION}"
COPY --from=build /app/node_modules ./node_modulesCOPY --from=build /app/package.json /app/deno.json /app/deno.lock ./COPY --from=build /app/build ./buildCOPY --from=build /app/migrations ./migrations
# The SQLite database lives on a volume; treat it as secret-grade and back it up.RUN mkdir -p /data && chown -R deno:deno /data /appUSER denoVOLUME /dataENV DB_PATH=/data/quantum.dbENV PORT=3000EXPOSE 3000
# -A is acceptable here: the container boundary is the sandbox.# --unstable-cron powers the daily SimpleFIN sync.CMD ["deno", "run", "--unstable-cron", "-A", "build/index.js"]