diff --git a/docker-compose.yml b/docker-compose.yml index f96e885..f67cd56 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -43,6 +43,8 @@ services: depends_on: - backend restart: unless-stopped + expose: + - '80' volumes: postgres_data: diff --git a/frontend/Dockerfile.prod b/frontend/Dockerfile.prod index c9a4952..08030fb 100644 --- a/frontend/Dockerfile.prod +++ b/frontend/Dockerfile.prod @@ -15,18 +15,14 @@ ENV VITE_API_URL=${VITE_API_URL} RUN npm run build # Production stage -FROM caddy:alpine +FROM nginx:alpine # Copy built assets -COPY --from=builder /app/dist /srv +COPY --from=builder /app/dist /usr/share/nginx/html -# Caddyfile for SPA routing -RUN echo ':8080 { \ - root * /srv \ - file_server \ - try_files {path} /index.html \ -}' > /etc/caddy/Caddyfile +# Copy nginx config +COPY nginx.conf /etc/nginx/conf.d/default.conf -EXPOSE 8080 +EXPOSE 80 -CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile"] +CMD ["nginx", "-g", "daemon off;"] diff --git a/frontend/nginx.conf b/frontend/nginx.conf new file mode 100644 index 0000000..3f2f5cf --- /dev/null +++ b/frontend/nginx.conf @@ -0,0 +1,19 @@ +server { + listen 80; + server_name _; + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } + + location /assets/ { + expires 1y; + add_header Cache-Control "public, immutable"; + } + + gzip on; + gzip_types text/css application/javascript application/json image/svg+xml; + gzip_comp_level 6; +}