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: - ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development} - ConnectionStrings__DefaultConnection=Host=db;Port=5432;Database=purrse;Username=purrse;Password=${DB_PASSWORD:-purrse_dev};Ssl Mode=Prefer;Trust Server Certificate=true - Jwt__Key=${JWT_KEY:-PurrseDefaultSecretKey_ChangeInProduction_AtLeast32Chars!} - Jwt__Issuer=Purrse - Jwt__Audience=Purrse - BankSync__EncryptionKey=${BANKSYNC_ENCRYPTION_KEY:-CHANGE_ME_32_CHAR_KEY_FOR_AES256!} - 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 volumes: purrse-db-data: purrse-plugins: purrse-imports: