# Barev Club — продакшен на общем VPS. # Наружу смотрит только barev-web (в сети proxy Nginx Proxy Manager), остальное — во внутренней сети. name: barev x-env: &env env_file: .env services: barev-db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: barev POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: barev TZ: Asia/Yerevan volumes: [db:/var/lib/postgresql/data] networks: [internal] mem_limit: 256m healthcheck: test: ['CMD-SHELL', 'pg_isready -U barev'] interval: 10s retries: 10 barev-redis: image: redis:7-alpine restart: unless-stopped command: redis-server --save 60 1 --maxmemory 64mb --maxmemory-policy noeviction volumes: [redis:/data] networks: [internal] mem_limit: 96m # S3-совместимое хранилище для фотоотчётов и сканов (приватный бакет) barev-s3: image: chrislusf/seaweedfs:latest restart: unless-stopped command: server -dir=/data -s3 -s3.port=9000 -s3.config=/etc/seaweed/s3.json -master.volumeSizeLimitMB=64 -volume.max=10 volumes: - s3:/data - ./seaweed-s3.json:/etc/seaweed/s3.json:ro # ключ шифрования SSE-S3 (s3.sse.kek): файлы шифруются при записи - ./security.toml:/etc/seaweedfs/security.toml:ro networks: [internal] mem_limit: 192m # API + воркер + оба бота barev-app: image: barev-app:latest <<: *env restart: unless-stopped depends_on: barev-db: { condition: service_healthy } barev-redis: { condition: service_started } barev-s3: { condition: service_started } networks: [internal] mem_limit: 512m barev-landing: image: barev-app:latest <<: *env restart: unless-stopped working_dir: /landing command: ['node', 'apps/landing/server.js'] environment: PORT: '3000' HOSTNAME: 0.0.0.0 networks: [internal] mem_limit: 192m barev-web: image: barev-web:latest restart: unless-stopped depends_on: [barev-app, barev-landing] networks: [internal, proxy] mem_limit: 64m # ежедневный бэкап БД, хранится 14 дней barev-backup: image: postgres:16-alpine restart: unless-stopped environment: PGPASSWORD: ${DB_PASSWORD} volumes: [backups:/backups] networks: [internal] mem_limit: 64m entrypoint: - sh - -c - | while true; do pg_dump -h barev-db -U barev -Fc barev > /backups/barev-$$(date +%F).dump && echo "backup ok" find /backups -name '*.dump' -mtime +14 -delete sleep 86400 done networks: internal: {} proxy: external: true volumes: db: {} redis: {} s3: {} backups: {}