ci / mobile / mobile (Metro-бандл Android) (push) Successful in 55s
ci / ts / ts (packages + web) (push) Successful in 1m0s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 34s
ci / api / api (push) Successful in 26s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 34s
- covers are taken from the embedded picture of the first track or a
cover/folder/front image in the album folder, converted by ffmpeg to
WebP 64/300/1200 and named by content hash, so albums sharing a cover
share the files; a full scan looks again for albums without one
- a 3-colour palette (dominant, second, most saturated accent) from a
deterministic k-means feeds placeholders, page tints and the wave
- /covers/{id} is public but HMAC-signed and immutable; nginx serves
the file via X-Accel-Redirect, X_ACCEL=false serves it from api
- the web client picks the size by display size and pixel density
- install.sh and update.sh generate STREAM_SIGNING_KEY
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
77 lines
2.4 KiB
YAML
77 lines
2.4 KiB
YAML
# Зависимости для локальной разработки.
|
||
# 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
|
||
MEILI_URL: http://meilisearch:7700
|
||
MEILI_MASTER_KEY: dev-master-key-change-me
|
||
INTERNAL_TOKEN: dev-internal-token
|
||
COOKIE_SECURE: "false"
|
||
X_ACCEL: "false"
|
||
CACHE_DIR: /tmp/pipu-cache
|
||
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:
|