Files
pipu-music/deploy/compose.dev.yaml
T
mrleo1nidandClaude Opus 5.5 4fa1add80d
ci / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 48s
ci / api (push) Successful in 51s
ci / recommender (push) Canceled after 2s
ci / ts (packages + web) (push) Canceled after 0s
ci / docker (образы собираются — их сервер собирает сам при обновлении) (apps/web/Dockerfile, web, ) (push) Canceled after 0s
ci / docker (образы собираются — их сервер собирает сам при обновлении) (services/api/Dockerfile, api, api) (push) Canceled after 0s
ci / docker (образы собираются — их сервер собирает сам при обновлении) (services/api/Dockerfile, storage-agent, storage-agent) (push) Canceled after 0s
ci / docker (образы собираются — их сервер собирает сам при обновлении) (services/recommender/Dockerfile, recommender, ) (push) Canceled after 0s
ci / mobile (Metro-бандл Android) (push) Canceled after 0s
fix: address project review findings
Security and robustness:
- storage-agent rejects an empty INTERNAL_TOKEN (config notEmpty + middleware)
- api takes the client IP only from X-Real-IP (chi RealIP trusted True-Client-IP)
- /readyz reports ok/fail and logs the cause; checks run in parallel with a timeout
- storage-agent shuts down gracefully; shared httpx.NewServer/Serve with IdleTimeout
- goose migrations take a Postgres advisory lock
- recommender readyz: per-check timeout, redis socket timeouts

Clients:
- Android release allows cleartext HTTP for LAN servers (expo-build-properties)
- checkServer times out after 10s; connect button is disabled while checking

Deploy and CI:
- install.sh hands cache/uploads/updates/models to the non-root service users
- update.sh refuses downgrades unless PIPU_ALLOW_DOWNGRADE=1
- recommender/analyzer get only the env they need; required secrets fail fast
- nginx security headers and CSP; strip True-Client-IP
- dev compose binds ports to 127.0.0.1; postgres/redis images pinned
- version.mjs fails on a malformed explicit tag instead of releasing 0.0.0-dev
- contract check catches untracked generated files
- final releases fail without a release keystore; changelog skips rc tags

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 00:46:46 +03:00

71 lines
2.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Зависимости для локальной разработки.
# docker compose -f deploy/compose.dev.yaml up -d # postgres, redis, meilisearch
# docker compose -f deploy/compose.dev.yaml --profile app up # + api и recommender из исходников
# Затем: веб — `pnpm --filter @pipu/web dev` (проксирует /api на :8080),
# api без docker — см. README, раздел «Разработка».
# Порты слушают только 127.0.0.1: у Redis нет пароля, а у dev-Postgres он известен всем.
name: pipu-dev
services:
postgres:
image: pgvector/pgvector:0.8.7-pg17
environment:
POSTGRES_USER: pipu
POSTGRES_PASSWORD: pipu
POSTGRES_DB: pipu
ports: ["127.0.0.1:5432:5432"]
volumes: [pg-data:/var/lib/postgresql/data]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U pipu -d pipu"]
interval: 5s
retries: 10
redis:
image: redis:7.4-alpine
ports: ["127.0.0.1:6379:6379"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
retries: 10
meilisearch:
image: getmeili/meilisearch:v1.11
environment:
MEILI_MASTER_KEY: dev-master-key-change-me
MEILI_ENV: development
ports: ["127.0.0.1:7700:7700"]
volumes: [meili-data:/meili_data]
api:
profiles: [app]
build:
context: ..
dockerfile: services/api/Dockerfile
target: api
environment:
DATABASE_URL: postgres://pipu:pipu@postgres:5432/pipu?sslmode=disable
REDIS_URL: redis://redis:6379/0
LOG_LEVEL: debug
ports: ["127.0.0.1:8080:8080"]
depends_on:
postgres: { condition: service_healthy }
redis: { condition: service_healthy }
recommender:
profiles: [app]
build:
context: ..
dockerfile: services/recommender/Dockerfile
environment:
DATABASE_URL: postgresql://pipu:pipu@postgres:5432/pipu
REDIS_URL: redis://redis:6379/0
INTERNAL_TOKEN: dev-internal-token
ports: ["127.0.0.1:8000:8000"]
depends_on:
postgres: { condition: service_healthy }
redis: { condition: service_healthy }
volumes:
pg-data:
meili-data: