Files
emdash/Dockerfile
T

49 lines
1.4 KiB
Docker

# ── Stage 1: Build ──────────────────────────────────────────────
# Utiliser Debian (slim) pour builder ET runtime → même libc (glibc)
# Évite l'incompatibilité musl/glibc avec better-sqlite3 (addon natif)
FROM node:22-slim AS builder
WORKDIR /app
# Install build dependencies for better-sqlite3 (native addon)
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 ci
COPY . .
RUN npm run build
# ── Stage 2: Runtime ────────────────────────────────────────────
FROM node:22-slim
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
tini \
&& rm -rf /var/lib/apt/lists/*
# Copy built output and production node_modules
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
# Create directories for persistent data
RUN mkdir -p /data /uploads && chown -R node:node /data /uploads /app
USER node
ENV HOST=0.0.0.0
ENV PORT=4321
ENV DATABASE_PATH=/data/emdash.db
ENV UPLOAD_DIR=/uploads
EXPOSE 4321
VOLUME ["/data", "/uploads"]
ENTRYPOINT ["tini", "--"]
CMD ["node", "./dist/server/entry.mjs"]