FROM node:22-slim AS build WORKDIR /app RUN corepack enable && corepack prepare pnpm@9.0.0 --activate COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc* bunfig.toml* ./ COPY @packages/companion-client/package.json ./@packages/companion-client/ COPY @applications/api/package.json ./@applications/api/ COPY @applications/web/package.json ./@applications/web/ COPY @tooling/e2e/package.json ./@tooling/e2e/ RUN pnpm install --frozen-lockfile --ignore-scripts COPY @packages/companion-client ./@packages/companion-client COPY @applications/web ./@applications/web RUN pnpm --filter @lilith/companion-client build RUN pnpm --filter @companion/web build FROM nginx:1.27-alpine COPY --from=build /app/@applications/web/dist /usr/share/nginx/html # Serve SPA with /api proxy to companion-api (matches Vite dev proxy behaviour) RUN printf 'server {\n\ listen 5850;\n\ root /usr/share/nginx/html;\n\ resolver 127.0.0.11 valid=5s;\n\ set $api_upstream http://companion-api:3850;\n\ location /api/ {\n\ proxy_pass $api_upstream/;\n\ proxy_set_header Host $host;\n\ proxy_set_header X-Real-IP $remote_addr;\n\ }\n\ location /socket.io/ {\n\ proxy_pass $api_upstream/socket.io/;\n\ proxy_http_version 1.1;\n\ proxy_set_header Upgrade $http_upgrade;\n\ proxy_set_header Connection "upgrade";\n\ }\n\ location / { try_files $uri $uri/ /index.html; }\n\ }\n' > /etc/nginx/conf.d/default.conf EXPOSE 5850