diff --git a/docker-compose.yml b/docker-compose.yml index 63866cc..a58030f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,8 +3,8 @@ version: '3.8' services: frontend: build: - context: . - dockerfile: docker/frontend/Dockerfile + context: ./frontend + dockerfile: ../docker/frontend/Dockerfile container_name: support-frontend restart: unless-stopped depends_on: @@ -23,15 +23,13 @@ services: - sqlite_data:/app/instance nginx: - image: nginx:alpine + build: + context: ./frontend + dockerfile: ../docker/frontend/Dockerfile container_name: support-nginx restart: unless-stopped ports: - "80:80" - volumes: - - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - - ./docker/nginx/conf.d:/etc/nginx/conf.d:ro - - ./frontend/dist:/usr/share/nginx/html:ro depends_on: - frontend - backend diff --git a/docker/frontend/Dockerfile b/docker/frontend/Dockerfile index a641559..a6c34d9 100644 --- a/docker/frontend/Dockerfile +++ b/docker/frontend/Dockerfile @@ -1,18 +1,19 @@ -FROM node:18-alpine +FROM node:18-alpine as builder WORKDIR /app # Copy package files -COPY frontend/package*.json ./ +COPY package*.json ./ # Install dependencies RUN npm install # Copy source code -COPY frontend/ . +COPY . . # Build the app RUN npm run build -# Keep container running and serve the built files -CMD ["npm", "run", "preview"] +# Production stage +FROM nginx:alpine +COPY --from=builder /app/dist /usr/share/nginx/html diff --git a/docker/nginx/conf.d/default.conf b/docker/nginx/conf.d/default.conf index 42716fa..708f609 100644 --- a/docker/nginx/conf.d/default.conf +++ b/docker/nginx/conf.d/default.conf @@ -1,5 +1,5 @@ upstream backend { - server backend:8000; # Changed from 8080 to 8000 + server backend:8000; # Changed from 8080 to match FastAPI port } server { @@ -9,8 +9,9 @@ server { root /usr/share/nginx/html; index index.html; + # Fix permissions and routing location / { - try_files $uri $uri/ /index.html; + try_files $uri $uri/ /index.html =404; add_header Cache-Control "no-cache"; } @@ -25,4 +26,10 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } -} \ No newline at end of file + + # Add explicit favicon handling + location = /favicon.ico { + access_log off; + log_not_found off; + } +}