chore: добавить каркас image-platform

- добавлен базовый pnpm workspace для будущих приложений

- добавлена dev-инфраструктура PostgreSQL и MinIO

- добавлены env-пример и базовые правила репозитория

- зафиксированы архитектура, data model и API-контракт

- описан контракт с внешним imgproxy
This commit is contained in:
2026-05-04 22:53:55 +03:00
commit 37592c8b81
13 changed files with 675 additions and 0 deletions

51
infra/compose.dev.yml Normal file
View File

@@ -0,0 +1,51 @@
name: image-platform
services:
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-image_platform}
POSTGRES_USER: ${POSTGRES_USER:-image}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-image-password}
ports:
- "${POSTGRES_PORT:-5433}:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 10
minio:
image: minio/minio:latest
restart: unless-stopped
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-image}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-image-password}
ports:
- "${MINIO_API_PORT:-9000}:9000"
- "${MINIO_CONSOLE_PORT:-9001}:9001"
volumes:
- minio-data:/data
minio-init:
image: minio/mc:latest
depends_on:
- minio
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-image}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-image-password}
S3_BUCKET: ${S3_BUCKET:-image-platform}
entrypoint: ["/bin/sh", "-c"]
command: >
"until mc alias set local http://minio:9000 $${MINIO_ROOT_USER} $${MINIO_ROOT_PASSWORD}; do sleep 1; done &&
mc mb --ignore-existing local/$${S3_BUCKET} &&
mc anonymous set download local/$${S3_BUCKET}"
restart: "no"
volumes:
postgres-data:
minio-data: