FROM node:22-alpine AS base ARG NEXT_PUBLIC_DISPATCH_URL="http://localhost:3001" ARG NEXT_PUBLIC_DISPATCH_SERVER_URL="http://localhost:4001" ARG NEXT_PUBLIC_HUB_URL="http://localhost:3002" ARG NEXT_PUBLIC_DISPATCH_SERVICE_ID="1" ARG NEXT_PUBLIC_LIVEKIT_URL="http://localhost:7880" ARG NEXT_PUBLIC_DISCORD_URL="https://discord.com" ARG NEXT_PUBLIC_OPENAIP_ACCESS="" ENV NEXT_PUBLIC_DISPATCH_SERVER_URL=$NEXT_PUBLIC_DISPATCH_SERVER_URL ENV NEXT_PUBLIC_DISPATCH_URL=$NEXT_PUBLIC_DISPATCH_URL ENV NEXT_PUBLIC_HUB_URL=$NEXT_PUBLIC_HUB_URL ENV NEXT_PUBLIC_DISPATCH_SERVICE_ID=$NEXT_PUBLIC_DISPATCH_SERVICE_ID ENV NEXT_PUBLIC_LIVEKIT_URL=$NEXT_PUBLIC_LIVEKIT_URL ENV NEXT_PUBLIC_OPENAIP_ACCESS=$NEXT_PUBLIC_OPENAIP_ACCESS ENV NEXT_PUBLIC_DISCORD_URL=$NEXT_PUBLIC_DISCORD_URL FROM base AS builder ENV PNPM_HOME="/usr/local/pnpm" ENV PATH="${PNPM_HOME}:${PATH}" RUN corepack enable && corepack prepare pnpm@latest --activate RUN pnpm add -g turbo@^2.5 RUN apk update RUN apk add --no-cache libc6-compat WORKDIR /usr/app RUN echo "NEXT_PUBLIC_HUB_URL is: $NEXT_PUBLIC_HUB_URL" RUN echo "NEXT_PUBLIC_DISPATCH_SERVICE_ID is: $NEXT_PUBLIC_DISPATCH_SERVICE_ID" RUN echo "NEXT_PUBLIC_DISPATCH_SERVER_URL is: $NEXT_PUBLIC_DISPATCH_SERVER_URL" RUN echo "NEXT_PUBLIC_LIVEKIT_URL is: $NEXT_PUBLIC_LIVEKIT_URL" COPY . . RUN turbo prune dispatch --docker FROM base AS installer ENV PNPM_HOME="/usr/local/pnpm" ENV PATH="${PNPM_HOME}:${PATH}" RUN corepack enable && corepack prepare pnpm@latest --activate RUN pnpm add -g turbo@^2.5 RUN apk update RUN apk add --no-cache libc6-compat WORKDIR /usr/app COPY --from=builder /usr/app/out/json/ . RUN pnpm install # Build the project COPY --from=builder /usr/app/out/full/ . RUN turbo run build FROM node:22-alpine AS runner WORKDIR /usr/app # Don't run production as root RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs # Automatically leverage output traces to reduce image size # https://nextjs.org/docs/advanced-features/output-file-tracing COPY --from=installer --chown=nextjs:nodejs /usr/app/apps/dispatch/.next/standalone ./ COPY --from=installer --chown=nextjs:nodejs /usr/app/apps/dispatch/.next/static ./apps/dispatch/.next/static COPY --from=installer --chown=nextjs:nodejs /usr/app/apps/dispatch/public ./apps/dispatch/public USER nextjs # Expose the application port EXPOSE 3000 ENV HOST=0.0.0.0 CMD ["node", "apps/dispatch/server.js"]