FROM node:22-bookworm-slim AS build WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends python3 make g++ \ && rm -rf /var/lib/apt/lists/* COPY package.json package-lock.json ./ RUN npm config set registry https://registry.npmmirror.com \ && npm config set fetch-retries 5 \ && npm config set fetch-retry-mintimeout 20000 \ && npm config set fetch-retry-maxtimeout 120000 \ && npm ci --legacy-peer-deps COPY . . RUN npm run build FROM node:22-bookworm-slim AS runtime RUN apt-get update \ && apt-get install -y --no-install-recommends openssl \ && rm -rf /var/lib/apt/lists/* ENV NODE_ENV=production \ HOST=0.0.0.0 \ PORT=3000 WORKDIR /app COPY --from=build /app/.output ./.output COPY --from=build /app/node_modules ./node_modules COPY --from=build /app/server/database/migrations ./server/database/migrations RUN mkdir -p /app/data/db /app/data/media /app/data/uploads/original /app/data/uploads/derived /app/data/uploads/trash /app/offsite-backups \ && chown -R node:node /app USER node EXPOSE 3000 CMD ["node", ".output/server/index.mjs"]