# syntax=docker/dockerfile:1.7-labs 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/* FROM base AS deps WORKDIR ${APP_HOME} COPY package.json bun.lock ./ RUN NODE_ENV=development bun install --frozen-lockfile FROM base AS runner 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 3001 CMD ["bun", "run", "server"]