FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ARG EXPO_PUBLIC_API_BASE_URL
ARG EXPO_PUBLIC_AUTH_BASE_URL
ARG EXPO_PUBLIC_KEYCLOAK_REALM
ARG EXPO_PUBLIC_KEYCLOAK_CLIENT_ID
ARG EXPO_PUBLIC_APP_ENV=production
ENV EXPO_PUBLIC_API_BASE_URL=$EXPO_PUBLIC_API_BASE_URL \
    EXPO_PUBLIC_AUTH_BASE_URL=$EXPO_PUBLIC_AUTH_BASE_URL \
    EXPO_PUBLIC_KEYCLOAK_REALM=$EXPO_PUBLIC_KEYCLOAK_REALM \
    EXPO_PUBLIC_KEYCLOAK_CLIENT_ID=$EXPO_PUBLIC_KEYCLOAK_CLIENT_ID \
    EXPO_PUBLIC_APP_ENV=$EXPO_PUBLIC_APP_ENV
RUN npm run build:pwa

# One-shot Compose init container copies the immutable export to nginx's volume.
FROM alpine:3.22 AS static
COPY --from=build /app/dist /dist
RUN mkdir /output
ENTRYPOINT ["/bin/sh", "-ec"]
CMD ["rm -rf /output/* /output/.[!.]* /output/..?* 2>/dev/null || true; cp -a /dist/. /output/"]
