| 
							 | 
						 | 
					
					
						
						| 
							 | 
						FROM node:18-slim as frontend-builder | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						WORKDIR /app/frontend | 
					
					
						
						| 
							 | 
						COPY frontend/package*.json ./ | 
					
					
						
						| 
							 | 
						RUN npm ci | 
					
					
						
						| 
							 | 
						COPY frontend/ ./ | 
					
					
						
						| 
							 | 
						RUN npm run build | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						FROM python:3.9-slim | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						WORKDIR /app | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						RUN apt-get update && apt-get install -y \ | 
					
					
						
						| 
							 | 
						    nginx \ | 
					
					
						
						| 
							 | 
						    libgomp1 \ | 
					
					
						
						| 
							 | 
						    libglib2.0-0 \ | 
					
					
						
						| 
							 | 
						    libsm6 \ | 
					
					
						
						| 
							 | 
						    libxext6 \ | 
					
					
						
						| 
							 | 
						    libxrender1 \ | 
					
					
						
						| 
							 | 
						    curl \ | 
					
					
						
						| 
							 | 
						    && rm -rf /var/lib/apt/lists/* | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						COPY backend/requirements.txt ./backend/ | 
					
					
						
						| 
							 | 
						RUN pip install --no-cache-dir -r backend/requirements.txt | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						COPY backend/ ./backend/ | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						COPY --from=frontend-builder /app/frontend/dist /usr/share/nginx/html | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						RUN rm -f /etc/nginx/sites-enabled/default && \ | 
					
					
						
						| 
							 | 
						    echo 'server { \ | 
					
					
						
						| 
							 | 
						    listen 7860; \ | 
					
					
						
						| 
							 | 
						    server_name localhost; \ | 
					
					
						
						| 
							 | 
						    root /usr/share/nginx/html; \ | 
					
					
						
						| 
							 | 
						    index index.html; \ | 
					
					
						
						| 
							 | 
						    \ | 
					
					
						
						| 
							 | 
						    location / { \ | 
					
					
						
						| 
							 | 
						        try_files $uri $uri/ /index.html; \ | 
					
					
						
						| 
							 | 
						    } \ | 
					
					
						
						| 
							 | 
						    \ | 
					
					
						
						| 
							 | 
						    location /api/ { \ | 
					
					
						
						| 
							 | 
						        proxy_pass http://127.0.0.1:8000/; \ | 
					
					
						
						| 
							 | 
						        proxy_http_version 1.1; \ | 
					
					
						
						| 
							 | 
						        proxy_set_header Upgrade $http_upgrade; \ | 
					
					
						
						| 
							 | 
						        proxy_set_header Connection "upgrade"; \ | 
					
					
						
						| 
							 | 
						        proxy_set_header Host $host; \ | 
					
					
						
						| 
							 | 
						        proxy_set_header X-Real-IP $remote_addr; \ | 
					
					
						
						| 
							 | 
						        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; \ | 
					
					
						
						| 
							 | 
						        proxy_set_header X-Forwarded-Proto $scheme; \ | 
					
					
						
						| 
							 | 
						        proxy_buffering off; \ | 
					
					
						
						| 
							 | 
						        proxy_read_timeout 86400; \ | 
					
					
						
						| 
							 | 
						    } \ | 
					
					
						
						| 
							 | 
						}' > /etc/nginx/sites-enabled/default | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						RUN mkdir -p /var/log | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						RUN echo ' | 
					
					
						
						| 
							 | 
						set -e \ | 
					
					
						
						| 
							 | 
						echo "Starting FastVLM Screen Observer..." \ | 
					
					
						
						| 
							 | 
						echo "Starting nginx..." \ | 
					
					
						
						| 
							 | 
						service nginx start \ | 
					
					
						
						| 
							 | 
						echo "Starting backend API..." \ | 
					
					
						
						| 
							 | 
						exec python -m uvicorn backend.app.main:app --host 127.0.0.1 --port 8000 --workers 1' > /app/start.sh && \ | 
					
					
						
						| 
							 | 
						    chmod +x /app/start.sh | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						EXPOSE 7860 | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						ENV USE_EXTREME_OPTIMIZATION=true | 
					
					
						
						| 
							 | 
						ENV MAX_MEMORY_GB=3 | 
					
					
						
						| 
							 | 
						ENV PYTHONUNBUFFERED=1 | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						CMD ["/app/start.sh"] |