# syntax=docker/dockerfile:1
FROM node@sha256:dc26ae92c9fb15cf6b1d63e20f0944b2efe0f115b20e00be48fb23fceb061c54 AS deps
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends openssl ca-certificates && rm -rf /var/lib/apt/lists/*
ENV NEXT_TELEMETRY_DISABLED=1 \
    POSTGRES_PRISMA_URL=postgresql://build:build@127.0.0.1:5432/build \
    POSTGRES_PRISMA_URL_NON_POOLING=postgresql://build:build@127.0.0.1:5432/build \
    POSTGRES_PRISMA_SHADOW_URL=postgresql://build:build@127.0.0.1:5432/shadow
COPY package.json package-lock.json ./
COPY prisma ./prisma
RUN npm ci --no-audit --no-fund

FROM deps AS build
COPY . .
ARG APP_URL=https://docs.dominusfoundry.com
ARG APP_HOST=docs.dominusfoundry.com
ARG STORAGE_HOST=files.docs.dominusfoundry.com
ENV NEXT_PUBLIC_BASE_URL=$APP_URL \
    NEXT_PUBLIC_APP_BASE_HOST=$APP_HOST \
    NEXT_PUBLIC_MARKETING_URL=$APP_URL \
    NEXT_PUBLIC_UPLOAD_TRANSPORT=s3 \
    NEXT_PRIVATE_UPLOAD_DISTRIBUTION_HOST=$STORAGE_HOST \
    NEXT_PRIVATE_UPLOAD_ENDPOINT=https://files.docs.dominusfoundry.com \
    NEXT_PRIVATE_UPLOAD_REGION=garage \
    NEXT_PRIVATE_UPLOAD_BUCKET=papermark \
    NEXTAUTH_URL=$APP_URL \
    NEXTAUTH_SECRET=build-only-placeholder-never-runtime \
    POSTGRES_PRISMA_URL=postgresql://build:build@127.0.0.1:5432/build \
    POSTGRES_PRISMA_URL_NON_POOLING=postgresql://build:build@127.0.0.1:5432/build
RUN npm run build
RUN test -f .next/standalone/server.js && test ! -d ee && test ! -d 'app/(ee)'

FROM node@sha256:dc26ae92c9fb15cf6b1d63e20f0944b2efe0f115b20e00be48fb23fceb061c54 AS runtime
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends openssl ca-certificates && rm -rf /var/lib/apt/lists/*
ENV NODE_ENV=production NEXT_TELEMETRY_DISABLED=1 HOSTNAME=0.0.0.0 PORT=3000
COPY --from=build --chown=node:node /app/.next/standalone ./
COPY --from=build --chown=node:node /app/.next/static ./.next/static
COPY --from=build --chown=node:node /app/public ./public
COPY --from=build /app/LICENSE ./LICENSE
USER node
EXPOSE 3000
CMD ["node", "server.js"]
