feat: add yalarba-nuxt to infra, wire fonts, switch nginx from static SPA to SSR proxy
This commit is contained in:
+16
-1
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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: 'Ял Арба',
|
||||||
|
|||||||
Reference in New Issue
Block a user