From b03f329da238dc7088f6e7e487baceac75bea53c Mon Sep 17 00:00:00 2001 From: MoonTestUse1 Date: Wed, 25 Dec 2024 21:31:30 +0600 Subject: [PATCH] 21:31 --- docker-compose.yml | 4 +++- docker/frontend/Dockerfile | 31 +++++++++++++++---------------- docker/nginx/conf.d/default.conf | 26 +++++++++++++++++--------- 3 files changed, 35 insertions(+), 26 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 009a640..7ee1e39 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,3 +1,5 @@ +version: '3.8' + services: frontend: build: @@ -42,4 +44,4 @@ networks: driver: bridge volumes: - sqlite_data: + sqlite_data: \ No newline at end of file diff --git a/docker/frontend/Dockerfile b/docker/frontend/Dockerfile index 262b471..34dcb50 100644 --- a/docker/frontend/Dockerfile +++ b/docker/frontend/Dockerfile @@ -1,33 +1,32 @@ +# Build stage FROM node:18-alpine as build WORKDIR /app -# Копируем только package.json и package-lock.json сначала +# Install dependencies COPY frontend/package*.json ./ - -# Устанавливаем зависимости RUN npm install -# Копируем все остальные файлы фронтенда +# Copy source and build COPY frontend/ . - -# Собираем приложение RUN npm run build -# Используем nginx для раздачи статики +# Production stage FROM nginx:alpine -# Копируем собранные файлы из этапа сборки +# Remove default nginx static assets +RUN rm -rf /usr/share/nginx/html/* + +# Copy static assets from builder stage COPY --from=build /app/dist /usr/share/nginx/html -# Создаем необходимые директории для nginx -RUN mkdir -p /var/cache/nginx \ - /var/cache/nginx/client_temp \ - /var/cache/nginx/proxy_temp \ - /var/cache/nginx/fastcgi_temp \ - /var/cache/nginx/uwsgi_temp \ - /var/cache/nginx/scgi_temp +# Copy nginx configuration +COPY docker/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf + +# Ensure correct permissions +RUN chown -R nginx:nginx /usr/share/nginx/html && \ + chmod -R 755 /usr/share/nginx/html EXPOSE 80 -CMD ["nginx", "-g", "daemon off;"] +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/docker/nginx/conf.d/default.conf b/docker/nginx/conf.d/default.conf index 2f9331c..5d35ff6 100644 --- a/docker/nginx/conf.d/default.conf +++ b/docker/nginx/conf.d/default.conf @@ -1,28 +1,36 @@ server { - listen 80; - server_name localhost; + listen 80 default_server; + server_name _; root /usr/share/nginx/html; index index.html; - # Настройка для SPA - все запросы направляются на index.html + # Включаем автоиндексацию для отладки + autoindex on; + + # Основной location для SPA location / { - try_files $uri $uri/ /index.html; + try_files $uri $uri/ /index.html =404; + add_header Cache-Control "no-cache"; } - # Проксирование API запросов на бэкенд + # API requests location /api/ { proxy_pass http://backend:8000; proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; 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 ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { - expires max; - log_not_found off; + # Static files + location /assets/ { + alias /usr/share/nginx/html/assets/; + expires 1y; + add_header Cache-Control "public, no-transform"; } } \ No newline at end of file