Snapshot of uncommitted work: landing, bots, prod infra, partner cabinet, backoffice stage 1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
45d7512d2b
commit
d452824c62
314 files changed
+44394
-121
No files matched your search
@@ -0,0 +1,105 @@
|
||||
# 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: {}
|
||||
Reference in new issue
Block a user