67 lines
1.9 KiB
Docker
67 lines
1.9 KiB
Docker
# syntax=docker/dockerfile:1.7-labs
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Stage 1: base - system dependencies shared by install and production
|
|
# ---------------------------------------------------------------------------
|
|
FROM oven/bun:1.3.10 AS base
|
|
|
|
ENV APP_HOME=/app \
|
|
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 \
|
|
REMOTION_PUPPETEER_NO_SANDBOX=1 \
|
|
NODE_ENV=production
|
|
|
|
WORKDIR ${APP_HOME}
|
|
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt-get update && \
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
ffmpeg \
|
|
chromium \
|
|
libglib2.0-0 \
|
|
libnss3 \
|
|
libatk1.0-0 \
|
|
libatk-bridge2.0-0 \
|
|
libdrm2 \
|
|
libxkbcommon0 \
|
|
libgbm1 \
|
|
fonts-noto-color-emoji \
|
|
curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Stage 2: deps - install Bun dependencies without project code
|
|
# ---------------------------------------------------------------------------
|
|
FROM base AS deps
|
|
WORKDIR ${APP_HOME}
|
|
COPY package.json bun.lock ./
|
|
RUN NODE_ENV=development bun install --frozen-lockfile
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Stage 3: prod - production target used by compute deployments
|
|
# ---------------------------------------------------------------------------
|
|
FROM base AS prod
|
|
WORKDIR ${APP_HOME}
|
|
|
|
COPY --from=deps ${APP_HOME}/node_modules ./node_modules
|
|
COPY package.json bun.lock ./
|
|
COPY tsconfig.json remotion.config.ts ./
|
|
COPY public ./public
|
|
COPY src ./src
|
|
COPY server ./server
|
|
|
|
RUN mkdir -p out
|
|
|
|
# Reuse the existing bun:bun user (UID/GID 1000) from the base image
|
|
RUN chown -R bun:bun /app
|
|
|
|
USER bun
|
|
|
|
EXPOSE 8001
|
|
|
|
CMD ["bun", "run", "server"]
|
|
|
|
# Backward-compatible target for the existing local docker-compose.yml.
|
|
FROM prod AS runner
|