Files
PnvPanel/docker-compose.yml
T
Leonid Pershin 8f6807a456
CI / Backend (build + test) (push) Successful in 1m23s
CI / Frontend (lint + typecheck + build) (push) Successful in 34s
Enhance inbound management by removing MaxClients property
- Removed the MaxClients property from Inbound-related data models, including InboundDto and PublishInboundCommand.
- Updated related methods and handlers to reflect the removal of MaxClients, ensuring consistent behavior across the application.
- Adjusted API documentation and frontend components to remove references to MaxClients, streamlining the inbound publishing process.
- Enhanced logging in command handlers to handle node unavailability scenarios during user actions.
- Improved database schema and migrations to align with the updated data model.
2026-07-14 23:11:50 +03:00

64 lines
2.2 KiB
YAML

services:
db:
image: postgres:17-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB:-pnvpanel}
POSTGRES_USER: ${POSTGRES_USER:-pnvpanel}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-pnvpanel}
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER:-pnvpanel} -d ${POSTGRES_DB:-pnvpanel}']
interval: 5s
timeout: 5s
retries: 10
restart: unless-stopped
logging:
driver: json-file
options:
max-size: '10m'
max-file: '3'
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
db:
condition: service_healthy
# Секреты (Jwt__SigningKey, AdminSeed__Password, Telegram__BotToken, ...) — из .env,
# см. .env.example. ConnectionStrings__Default ниже переопределяет .env: адрес БД внутри
# сети compose всегда 'db', не значение из .env (которое рассчитано на локальный запуск).
env_file:
- .env
environment:
ASPNETCORE_ENVIRONMENT: Production
ASPNETCORE_HTTP_PORTS: '8085'
ConnectionStrings__Default: 'Host=db;Port=5432;Database=${POSTGRES_DB:-pnvpanel};Username=${POSTGRES_USER:-pnvpanel};Password=${POSTGRES_PASSWORD:-pnvpanel}'
FileStorage__RootPath: '/app/uploads'
volumes:
# Data Protection key-ring (шифрование секретов нод at-rest) должен пережить пересоздание
# контейнера — иначе расшифровка паролей нод после рестарта станет невозможна.
- dp_keys:/app/keys
# Вложения тикетов поддержки (скриншоты) — обычные файлы на диске, см. DiskFileStorage.
- ticket_uploads:/app/uploads
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:8085/health']
interval: 15s
timeout: 5s
start_period: 20s
retries: 5
ports:
- '8085:8085'
restart: unless-stopped
logging:
driver: json-file
options:
max-size: '10m'
max-file: '3'
volumes:
pgdata:
dp_keys:
ticket_uploads: