MovixOpenSource/Dockerfile
Movix 1401dc20f3 tird release
mon compte github a été détecté comme du spam je crois
2026-04-28 17:55:00 +02:00

77 lines
2.7 KiB
Docker

# syntax=docker/dockerfile:1.7
# ==============================================================
# Stage 1 — Builder : install all deps + Vite production build
# ==============================================================
FROM node:20-alpine AS builder
WORKDIR /app
# 1) Lockfile-only first => layer cached as long as deps don't change
COPY package.json package-lock.json ./
RUN --mount=type=cache,id=movix-npm-builder,target=/root/.npm,sharing=locked \
npm ci --prefer-offline --no-audit --no-fund
# 2) Build-time env vars (Vite bakes them into the bundle)
# Inject these from Coolify -> Configuration -> Build Variables
ARG VITE_MAIN_API
ARG VITE_TMDB_API_KEY
ARG VITE_SITE_URL
ARG VITE_WATCHPARTY_API
ARG VITE_PROXY_BASE_URL
ARG VITE_API_PROXY_BASE_URL
ARG VITE_PROXIES_EMBED_API
ARG VITE_RIVESTREAM_PROXIES
ARG VITE_TURNSTILE_SITE_KEY
ARG VITE_TURNSTILE_INVISIBLE_SITEKEY
ARG VITE_VAPID_PUBLIC_KEY
ARG VITE_SUPPORT_TELEGRAM_URL
ARG VITE_APP_BUILD_ID
ENV VITE_MAIN_API=$VITE_MAIN_API \
VITE_TMDB_API_KEY=$VITE_TMDB_API_KEY \
VITE_SITE_URL=$VITE_SITE_URL \
VITE_WATCHPARTY_API=$VITE_WATCHPARTY_API \
VITE_PROXY_BASE_URL=$VITE_PROXY_BASE_URL \
VITE_API_PROXY_BASE_URL=$VITE_API_PROXY_BASE_URL \
VITE_PROXIES_EMBED_API=$VITE_PROXIES_EMBED_API \
VITE_RIVESTREAM_PROXIES=$VITE_RIVESTREAM_PROXIES \
VITE_TURNSTILE_SITE_KEY=$VITE_TURNSTILE_SITE_KEY \
VITE_TURNSTILE_INVISIBLE_SITEKEY=$VITE_TURNSTILE_INVISIBLE_SITEKEY \
VITE_VAPID_PUBLIC_KEY=$VITE_VAPID_PUBLIC_KEY \
VITE_SUPPORT_TELEGRAM_URL=$VITE_SUPPORT_TELEGRAM_URL \
VITE_APP_BUILD_ID=$VITE_APP_BUILD_ID
# 3) Source code (.dockerignore strips backends, extensions, mobile, etc.)
COPY . .
# 4) Vite build with persistent transform cache
RUN --mount=type=cache,id=movix-vite,target=/app/node_modules/.cache \
npm run build:coolify
# ==============================================================
# Stage 2 — Runner : minimal Node image to serve dist/ + Hono SSR
# ==============================================================
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production \
PORT=3001
# Reuse node_modules from builder, then prune devDeps in-place (no re-download)
COPY --from=builder /app/package.json /app/package-lock.json ./
COPY --from=builder /app/node_modules ./node_modules
RUN npm prune --omit=dev && rm -rf /root/.npm /tmp/*
# Built static assets + Hono server + helper imported by server/index.js
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/server ./server
COPY --from=builder /app/functions/_lib ./functions/_lib
EXPOSE 3001
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
CMD wget -qO- http://127.0.0.1:${PORT}/health || exit 1
USER node
CMD ["node", "server/index.js"]