feat: add yalarba-nuxt to infra, wire fonts, switch nginx from static SPA to SSR proxy
This commit is contained in:
@@ -251,3 +251,18 @@ start_api_yal:
|
||||
|
||||
# Полный цикл обновления api_yal
|
||||
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
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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: 'Ял Арба',
|
||||
|
||||
Reference in New Issue
Block a user