services: admin: build: context: . args: VITE_API_BASE_URL: http://localhost:7000 ports: - '3000:80' depends_on: - backend restart: unless-stopped backend: build: context: .. ports: - '7000:7000' volumes: - ../data:/app/data env_file: ../.env environment: - DATABASE_URL=postgresql+asyncpg://imago:imago@db:5432/imago - REDIS_URL=redis://redis:6379/0 - STORAGE_BACKEND=s3 - S3_BUCKET=imago - S3_ENDPOINT_URL=http://minio:9000 - S3_ENDPOINT_PUBLIC=http://localhost:9000 - S3_ACCESS_KEY=minioadmin - S3_SECRET_KEY=minioadmin - S3_REGION=us-east-1 depends_on: db: condition: service_healthy redis: condition: service_healthy restart: unless-stopped worker: build: context: .. command: python worker.py env_file: ../.env environment: - DATABASE_URL=postgresql+asyncpg://imago:imago@db:5432/imago - REDIS_URL=redis://redis:6379/0 - STORAGE_BACKEND=s3 - S3_BUCKET=imago - S3_ENDPOINT_URL=http://minio:9000 - S3_ACCESS_KEY=minioadmin - S3_SECRET_KEY=minioadmin - S3_REGION=us-east-1 depends_on: db: condition: service_healthy redis: condition: service_healthy restart: unless-stopped db: image: postgres:16-alpine environment: POSTGRES_USER: imago POSTGRES_PASSWORD: imago POSTGRES_DB: imago volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ['CMD-SHELL', 'pg_isready -U imago -d imago'] interval: 5s timeout: 5s retries: 5 restart: unless-stopped redis: image: redis:7-alpine ports: - '6379:6379' volumes: - redis_data:/data command: redis-server --appendonly yes restart: unless-stopped healthcheck: test: ['CMD', 'redis-cli', 'ping'] interval: 10s timeout: 5s retries: 3 minio: image: minio/minio ports: - '9000:9000' - '9001:9001' environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin command: server /data --console-address ':9001' volumes: - minio_data:/data restart: unless-stopped volumes: postgres_data: redis_data: minio_data: