11# syntax=docker/dockerfile:1.7
22
33# ---------- Base dependencies ----------
4- FROM node:20 -bookworm-slim AS base
4+ FROM node:22 -bookworm-slim AS base
55
66# set workdir and install common deps
77WORKDIR /app
8- ENV NODE_ENV=production
9-
108RUN apt-get update \
119 && apt-get install -y --no-install-recommends \
1210 ca-certificates \
@@ -34,16 +32,16 @@ RUN yarn prisma generate \
3432 && yarn build
3533
3634# ---------- Production runtime ----------
37- FROM node:20 -bookworm-slim AS runtime
35+ FROM node:22 -bookworm-slim AS runtime
3836
3937WORKDIR /app
4038ENV NODE_ENV=production
4139ENV PORT=5000
42- ENV DATABASE_URL="file:. /data/sovereign.db"
40+ ENV DATABASE_URL="file:/app /data/sovereign.db"
4341
4442# Install tini for proper signal handling
4543RUN apt-get update \
46- && apt-get install -y --no-install-recommends tini \
44+ && apt-get install -y --no-install-recommends tini openssl \
4745 && rm -rf /var/lib/apt/lists/*
4846
4947# Copy production node_modules from deps
@@ -55,6 +53,9 @@ COPY --from=build /app/public ./public
5553COPY --from=build /app/prisma ./prisma
5654COPY --from=build /app/package.json ./package.json
5755
56+ # Ensure Prisma client is generated for the runtime environment
57+ RUN yarn prisma generate
58+
5859# Prepare persistent data directory for sqlite
5960RUN mkdir -p /app/data \
6061 && chown node:node /app/data
0 commit comments