Spaces:
Running
Running
| # Build stage | |
| FROM node:20-alpine AS builder | |
| WORKDIR /app | |
| COPY package*.json ./ | |
| RUN npm install | |
| COPY . . | |
| RUN npm run build | |
| # Production stage | |
| FROM nginx:alpine | |
| # Copy files | |
| COPY --from=builder /app/dist /usr/share/nginx/html/ | |
| # Custom nginx config with COEP/COOP/CORP headers | |
| RUN echo 'server { \ | |
| listen 7860; \ | |
| location / { \ | |
| root /usr/share/nginx/html; \ | |
| index index.html; \ | |
| try_files $uri $uri/ /index.html; \ | |
| add_header Cross-Origin-Opener-Policy same-origin; \ | |
| add_header Cross-Origin-Embedder-Policy require-corp; \ | |
| add_header Cross-Origin-Resource-Policy cross-origin; \ | |
| add_header Cache-Control "no-cache, no-store, must-revalidate"; \ | |
| } \ | |
| location ~* \.(js|css|wasm)$ { \ | |
| root /usr/share/nginx/html; \ | |
| add_header Cross-Origin-Opener-Policy same-origin; \ | |
| add_header Cross-Origin-Embedder-Policy require-corp; \ | |
| add_header Cross-Origin-Resource-Policy cross-origin; \ | |
| add_header Cache-Control "no-cache, must-revalidate"; \ | |
| } \ | |
| }' > /etc/nginx/conf.d/default.conf | |
| EXPOSE 7860 | |