feat: add yalarba-nuxt to infra, wire fonts, switch nginx from static SPA to SSR proxy

This commit is contained in:
valitovgaziz
2026-06-12 00:37:49 +05:00
parent 60867af69c
commit d8349a0936
5 changed files with 52 additions and 71 deletions
+16 -1
View File
@@ -250,4 +250,19 @@ start_api_yal:
docker compose up api_yal -d docker compose up api_yal -d
# Полный цикл обновления api_yal # Полный цикл обновления api_yal
api_yal: stop_api_yal git build_api_yal start_api_yal wn 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
+23 -1
View File
@@ -43,7 +43,6 @@ services:
- certbot_data:/etc/letsencrypt - certbot_data:/etc/letsencrypt
- certbot_www:/var/www/certbot - certbot_www:/var/www/certbot
- ./stubSite:/usr/share/nginx/stub/html - ./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 - ./BB/bbvue/dist:/usr/share/nginx/begushiybashkir/html
- analytics_logs:/var/log/analytics:ro - analytics_logs:/var/log/analytics:ro
networks: networks:
@@ -66,6 +65,8 @@ services:
condition: service_healthy condition: service_healthy
api_yal: api_yal:
condition: service_healthy condition: service_healthy
yalarba:
condition: service_healthy
valitovgaziz: valitovgaziz:
condition: service_healthy condition: service_healthy
healthcheck: healthcheck:
@@ -320,6 +321,27 @@ services:
retries: 3 retries: 3
start_period: 40s 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: volumes:
certbot_data: # volume для данных Certbot certbot_data: # volume для данных Certbot
+10 -30
View File
@@ -103,55 +103,35 @@ server {
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
# ============================================ # ============================================
# ЛОКАЦИЯ: Корневая (SPA приложение) # ЛОКАЦИЯ: Nuxt 4 SSR приложение
# ============================================ # ============================================
location / { location / {
# Директория со скомпилированным Vue/React приложением # Проксирование к Nuxt.js SSR серверу
root /usr/share/nginx/yalarba/html; 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 Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Port $server_port;
# Увеличенные таймауты для длительных операций (10 минут) # Длинные таймауты
proxy_connect_timeout 600; proxy_connect_timeout 600;
proxy_send_timeout 600; proxy_send_timeout 600;
proxy_read_timeout 600; proxy_read_timeout 600;
} }
location /auth/ { # ============================================
# Проксирование всех запросов к API на Golang сервис # ЛОКАЦИЯ: REST API (api_yal)
proxy_pass http://api_yal/; # Контейнер Docker # ============================================
location /api/v1/ {
# Передача оригинальных заголовков от клиента proxy_pass http://api_yal:8787/;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Port $server_port;
# Увеличенные таймауты для длительных операций (10 минут)
proxy_connect_timeout 600; proxy_connect_timeout 600;
proxy_send_timeout 600; proxy_send_timeout 600;
proxy_read_timeout 600; proxy_read_timeout 600;
@@ -6,42 +6,4 @@
font-display: swap; font-display: swap;
} }
@font-face { @import url('https://fonts.googleapis.com/css2?family=Inter:wght@600&family=Mulish:wght@400;500;600;700&display=swap');
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;
}
@@ -74,6 +74,8 @@ export default defineNuxtConfig({
head: { head: {
link: [ link: [
{ rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' }, { 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 - Ял Арба', titleTemplate: '%s - Ял Арба',
title: 'Ял Арба', title: 'Ял Арба',