rebours/Dockerfile
2026-02-24 15:13:37 +01:00

41 lines
1.6 KiB
Docker

# ─────────────────────────────────────────────────────────────────────────────
# REBOUR — Dockerfile
# Runtime : Bun + Elysia (pas de SSR, le HTML est statique dans public/)
# Stratégie : multi-stage pour image finale la plus légère possible
# ─────────────────────────────────────────────────────────────────────────────
# ── Stage 1 : installation des dépendances ────────────────────────────────────
FROM oven/bun:1.3-alpine AS deps
WORKDIR /app
COPY package.json bun.lock ./
RUN bun install --frozen-lockfile --production
# ── Stage 2 : image de production ─────────────────────────────────────────────
FROM oven/bun:1.3-alpine AS runner
WORKDIR /app
# Dépendances uniquement runtime
COPY --from=deps /app/node_modules ./node_modules
# Code serveur
COPY server.ts ./
# Fichiers publics (HTML statique + assets + CSS/JS)
# Le HTML est pré-écrit, pas de build step nécessaire (pas de SSR/bundler)
COPY public/ ./public/
# Utilisateur non-root (sécurité)
USER bun
EXPOSE 3000
ENV NODE_ENV=production
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD wget -qO- http://localhost:3000/robots.txt || exit 1
CMD ["bun", "run", "server.ts"]