FROM node:22-alpine AS deps
WORKDIR /app
COPY package*.json ./
COPY apps/api/package.json apps/api/package.json
COPY apps/web/package.json apps/web/package.json
RUN npm ci

FROM deps AS build
COPY tsconfig.base.json ./
COPY eslint.config.mjs ./
COPY apps/api apps/api
COPY apps/web apps/web
RUN npm run build

FROM node:22-alpine AS runtime
WORKDIR /app
ENV NODE_ENV=production
ENV API_PORT=3000
ENV WEB_PORT=8080
ENV API_BASE_URL=http://localhost:3000

RUN apk add --no-cache nginx

COPY --from=deps /app/node_modules node_modules
COPY --from=build /app/apps/api/dist api
COPY --from=build /app/apps/web/dist/web/browser /usr/share/nginx/html
COPY apps/api/package.json package.json
COPY docker/single-container.nginx.conf /etc/nginx/http.d/default.conf
COPY docker/start-single-container.sh /usr/local/bin/start-ldap-portal
RUN chmod +x /usr/local/bin/start-ldap-portal \
  && mkdir -p /run/nginx /var/log/nginx

EXPOSE 3000 8080
CMD ["start-ldap-portal"]
