From d8349a09367753d06f4939da71801410bf270a24 Mon Sep 17 00:00:00 2001 From: valitovgaziz Date: Fri, 12 Jun 2026 00:37:49 +0500 Subject: [PATCH] feat: add yalarba-nuxt to infra, wire fonts, switch nginx from static SPA to SSR proxy --- main_dc/Makefile | 17 +++++++- main_dc/docker-compose.yml | 24 ++++++++++- main_dc/nginx/nginx-ssl.conf | 40 +++++-------------- .../yalarba-nuxt/app/assets/css/fonts.css | 40 +------------------ main_dc/yalarba/yalarba-nuxt/nuxt.config.ts | 2 + 5 files changed, 52 insertions(+), 71 deletions(-) diff --git a/main_dc/Makefile b/main_dc/Makefile index 9da66d2..4d44915 100644 --- a/main_dc/Makefile +++ b/main_dc/Makefile @@ -250,4 +250,19 @@ start_api_yal: docker compose up api_yal -d # Полный цикл обновления api_yal -api_yal: stop_api_yal git build_api_yal start_api_yal wn \ No newline at end of file +api_yal: stop_api_yal git build_api_yal start_api_yal wn + +# Остановка yalarba-nuxt +stop_yalarba: + docker compose down yalarba + +# Пересборка yalarba-nuxt +build_yalarba: + docker compose build yalarba --no-cache + +# Запуск yalarba-nuxt +start_yalarba: + docker compose up yalarba -d + +# Полный цикл обновления yalarba-nuxt +yalarba: stop_yalarba git build_yalarba start_yalarba wn \ No newline at end of file diff --git a/main_dc/docker-compose.yml b/main_dc/docker-compose.yml index d7beebb..44f2fd5 100644 --- a/main_dc/docker-compose.yml +++ b/main_dc/docker-compose.yml @@ -43,7 +43,6 @@ services: - certbot_data:/etc/letsencrypt - certbot_www:/var/www/certbot - ./stubSite:/usr/share/nginx/stub/html - - ./yalarba/serv_spa/spa/vue/dist:/usr/share/nginx/yalarba/html - ./BB/bbvue/dist:/usr/share/nginx/begushiybashkir/html - analytics_logs:/var/log/analytics:ro networks: @@ -66,6 +65,8 @@ services: condition: service_healthy api_yal: condition: service_healthy + yalarba: + condition: service_healthy valitovgaziz: condition: service_healthy healthcheck: @@ -320,6 +321,27 @@ services: retries: 3 start_period: 40s +# Nuxt 4 SPA для yalarba.ru + yalarba: + build: + context: ./yalarba/yalarba-nuxt + dockerfile: Dockerfile + container_name: yalarba + restart: unless-stopped + environment: + NODE_ENV: production + HOST: 0.0.0.0 + PORT: 3000 + NUXT_PUBLIC_API_BASE: /api/v1 + NUXT_PUBLIC_APP_URL: https://yalarba.ru + networks: + - web-network + - app-network + healthcheck: + test: ["CMD", "wget", "--spider", "http://localhost:3000/api/health"] + interval: 30s + timeout: 10s + retries: 3 volumes: certbot_data: # volume для данных Certbot diff --git a/main_dc/nginx/nginx-ssl.conf b/main_dc/nginx/nginx-ssl.conf index e30c2d6..8466a8d 100644 --- a/main_dc/nginx/nginx-ssl.conf +++ b/main_dc/nginx/nginx-ssl.conf @@ -103,55 +103,35 @@ server { ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; # ============================================ - # ЛОКАЦИЯ: Корневая (SPA приложение) + # ЛОКАЦИЯ: Nuxt 4 SSR приложение # ============================================ location / { - # Директория со скомпилированным Vue/React приложением - root /usr/share/nginx/yalarba/html; + # Проксирование к Nuxt.js SSR серверу + proxy_pass http://yalarba:3000; - # Файл по умолчанию - index index.html; - - # Логика SPA роутинга: - # 1. Пробуем найти точный файл ($uri) - # 2. Пробуем найти директорию ($uri/) - # 3. Если не нашли - отдаем index.html - # Это позволяет клиентскому роутингу работать корректно - try_files $uri $uri/ /index.html; - } - - # ============================================ - # ЛОКАЦИЯ: REST API Backend - # ============================================ - location /api/ { - # Проксирование всех запросов к API на Golang сервис - proxy_pass http://api_tp/; # Контейнер Docker - - # Передача оригинальных заголовков от клиента + # Полный набор заголовков для корректной работы приложения 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_set_header X-Forwarded-Port $server_port; - # Увеличенные таймауты для длительных операций (10 минут) + # Длинные таймауты proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; } - location /auth/ { - # Проксирование всех запросов к API на Golang сервис - proxy_pass http://api_yal/; # Контейнер Docker - - # Передача оригинальных заголовков от клиента + # ============================================ + # ЛОКАЦИЯ: REST API (api_yal) + # ============================================ + location /api/v1/ { + proxy_pass http://api_yal:8787/; 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_set_header X-Forwarded-Port $server_port; - - # Увеличенные таймауты для длительных операций (10 минут) proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; diff --git a/main_dc/yalarba/yalarba-nuxt/app/assets/css/fonts.css b/main_dc/yalarba/yalarba-nuxt/app/assets/css/fonts.css index 1313e4f..f7c03da 100644 --- a/main_dc/yalarba/yalarba-nuxt/app/assets/css/fonts.css +++ b/main_dc/yalarba/yalarba-nuxt/app/assets/css/fonts.css @@ -6,42 +6,4 @@ font-display: swap; } -@font-face { - font-family: 'Mulish'; - src: url('/fonts/Mulish-Regular.woff2') format('woff2'); - font-weight: 400; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Mulish'; - src: url('/fonts/Mulish-Medium.woff2') format('woff2'); - font-weight: 500; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Mulish'; - src: url('/fonts/Mulish-SemiBold.woff2') format('woff2'); - font-weight: 600; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Mulish'; - src: url('/fonts/Mulish-Bold.woff2') format('woff2'); - font-weight: 700; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/fonts/Inter-SemiBold.woff2') format('woff2'); - font-weight: 600; - font-style: normal; - font-display: swap; -} +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@600&family=Mulish:wght@400;500;600;700&display=swap'); diff --git a/main_dc/yalarba/yalarba-nuxt/nuxt.config.ts b/main_dc/yalarba/yalarba-nuxt/nuxt.config.ts index 5c6f37d..2c5f9cd 100644 --- a/main_dc/yalarba/yalarba-nuxt/nuxt.config.ts +++ b/main_dc/yalarba/yalarba-nuxt/nuxt.config.ts @@ -74,6 +74,8 @@ export default defineNuxtConfig({ head: { link: [ { rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' }, + { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, + { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' }, ], titleTemplate: '%s - Ял Арба', title: 'Ял Арба',