first commit

This commit is contained in:
brusnitsyn
2026-06-24 17:20:43 +09:00
commit 43499acf1c
165 changed files with 25929 additions and 0 deletions

72
deploy/docker-compose.yml Normal file
View File

@@ -0,0 +1,72 @@
# ============================================================================
# Пример docker-compose для защищённого развёртывания (УЗ-1 / К1)
# Сегментация (раздел 10 гайда): веб в одной сети, БД/Redis — во внутренней
# сети без доступа из интернета (мера ЗИС.1).
# Это ОБРАЗЕЦ для стенда; в проде используйте управляемые БД и секрет-хранилище.
# ============================================================================
services:
app:
build:
context: ..
dockerfile: deploy/Dockerfile
restart: unless-stopped
env_file: ../.env
depends_on:
- pgsql
- pgsql-audit
- redis
networks: [frontend, backend]
volumes:
- app-storage:/var/www/app/storage
nginx:
image: nginx:1.27-alpine
restart: unless-stopped
depends_on: [app]
ports:
- "443:443"
- "80:80"
volumes:
- ./nginx/app.conf:/etc/nginx/conf.d/default.conf:ro
- ./certs:/etc/ssl/app:ro
networks: [frontend]
# Основная БД с ПДн — только во внутренней сети (ЗИС.1).
pgsql:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${DB_DATABASE}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- pgsql-data:/var/lib/postgresql/data
networks: [backend]
# Отдельная БД журнала аудита (РСБ.3) — изолированный экземпляр.
pgsql-audit:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${AUDIT_DB_DATABASE}
POSTGRES_USER: ${AUDIT_DB_USERNAME}
POSTGRES_PASSWORD: ${AUDIT_DB_PASSWORD}
volumes:
- pgsql-audit-data:/var/lib/postgresql/data
networks: [backend]
redis:
image: redis:7-alpine
restart: unless-stopped
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}"]
networks: [backend]
networks:
frontend:
backend:
internal: true # Нет доступа в интернет из сегмента БД (ЗИС.1).
volumes:
app-storage:
pgsql-data:
pgsql-audit-data: