From f3528d64b84594d3a802a6eb4f2c2954b602bce1 Mon Sep 17 00:00:00 2001 From: koziavin Date: Wed, 11 Jun 2025 22:01:09 +0400 Subject: [PATCH] first commit --- Dockerfile | 50 +++++++++++++++++++++++++++++++++++++++++++--- docker-compose.yml | 4 ++-- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index acf7cb6..95b3371 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,12 +18,56 @@ RUN npm run build # Production stage FROM nginx:alpine +# Install necessary tools +RUN apk add --no-cache curl + +# Create nginx configuration +RUN echo 'server { \ + listen 80; \ + server_name localhost; \ + root /usr/share/nginx/html; \ + index index.html; \ + \ + # Gzip compression \ + gzip on; \ + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; \ + \ + # Security headers \ + add_header X-Frame-Options "SAMEORIGIN"; \ + add_header X-XSS-Protection "1; mode=block"; \ + add_header X-Content-Type-Options "nosniff"; \ + \ + # Trust proxy headers \ + real_ip_header X-Forwarded-For; \ + set_real_ip_from 0.0.0.0/0; \ + \ + # Handle proxy headers \ + 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; \ + \ + location / { \ + try_files $uri $uri/ /index.html; \ + } \ + \ + # Cache static assets \ + location /assets/ { \ + expires 1y; \ + add_header Cache-Control "public, no-transform"; \ + } \ + \ + # Error pages \ + error_page 404 /index.html; \ + error_page 500 502 503 504 /50x.html; \ + location = /50x.html { \ + root /usr/share/nginx/html; \ + } \ +}' > /etc/nginx/conf.d/default.conf + # Copy built assets from build stage COPY --from=build /app/dist /usr/share/nginx/html -# Copy nginx configuration -COPY nginx.conf /etc/nginx/conf.d/default.conf - # Expose port 80 EXPOSE 80 diff --git a/docker-compose.yml b/docker-compose.yml index 753688d..1822853 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,8 +5,8 @@ services: build: context: . dockerfile: Dockerfile - ports: - - "3000:80" + expose: + - "80" restart: unless-stopped environment: - NODE_ENV=production