services: db: image: postgres:17-alpine container_name: purrse-db environment: POSTGRES_DB: purrse POSTGRES_USER: purrse POSTGRES_PASSWORD: ${DB_PASSWORD:-purrse_dev} ports: - "5433:5432" volumes: - purrse-db-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U purrse"] interval: 5s timeout: 5s retries: 5 api: build: context: . dockerfile: src/Purrse.Api/Dockerfile container_name: purrse-api environment: - ConnectionStrings__DefaultConnection=Host=db;Port=5432;Database=purrse;Username=purrse;Password=${DB_PASSWORD:-purrse_dev} - Jwt__Key=${JWT_KEY:-PurrseDefaultSecretKey_ChangeInProduction_AtLeast32Chars!} - Jwt__Issuer=Purrse - Jwt__Audience=Purrse - Cors__Origins__0=http://localhost:9080 - Plugins__Path=/app/plugins - Imports__WatchPath=/app/imports ports: - "5000:8080" volumes: - purrse-plugins:/app/plugins - purrse-imports:/app/imports depends_on: db: condition: service_healthy frontend: build: context: ./frontend dockerfile: Dockerfile container_name: purrse-frontend ports: - "9080:80" depends_on: - api docker-cleanup: image: docker:cli container_name: purrse-docker-cleanup restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock entrypoint: ["/bin/sh", "-c", "while true; do sleep 86400; docker image prune -f; done"] volumes: purrse-db-data: purrse-plugins: purrse-imports: