name: fleet-platform-dev services: db: image: timescale/timescaledb-ha:pg16 environment: POSTGRES_DB: ${POSTGRES_DB:-fleet} POSTGRES_USER: ${POSTGRES_USER:-fleet} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} ports: - "5432:5432" volumes: - db_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER}"] interval: 5s timeout: 3s retries: 10 pgbouncer: image: edoburu/pgbouncer:latest environment: DB_HOST: db DB_PORT: 5432 DB_USER: ${POSTGRES_USER:-fleet} DB_PASSWORD: ${POSTGRES_PASSWORD} DB_NAME: ${POSTGRES_DB:-fleet} POOL_MODE: transaction AUTH_TYPE: scram-sha-256 ports: - "6432:6432" depends_on: db: condition: service_healthy platform-gateway: build: context: . args: GIT_SHA: dev image: fleet-platform:dev environment: APP_ROLE: gateway APP_MODE: dev DATABASE_URL: postgresql://${POSTGRES_USER:-fleet}:${POSTGRES_PASSWORD}@pgbouncer:6432/${POSTGRES_DB:-fleet} JWT_SECRET: ${JWT_SECRET} TRACKSOLID_PUSH_TOKEN: ${TRACKSOLID_PUSH_TOKEN} ports: - "8001:8000" volumes: - ./app:/srv/app/app depends_on: pgbouncer: condition: service_started command: ["uvicorn", "app.entrypoints.gateway:app", "--host", "0.0.0.0", "--port", "8000", "--reload", "--reload-dir", "/srv/app/app"] platform-worker: image: fleet-platform:dev environment: APP_ROLE: worker APP_MODE: dev DATABASE_URL: postgresql://${POSTGRES_USER:-fleet}:${POSTGRES_PASSWORD}@pgbouncer:6432/${POSTGRES_DB:-fleet} ports: - "8002:8000" volumes: - ./app:/srv/app/app depends_on: pgbouncer: condition: service_started platform-cron: image: fleet-platform:dev environment: APP_ROLE: cron APP_MODE: dev DATABASE_URL: postgresql://${POSTGRES_USER:-fleet}:${POSTGRES_PASSWORD}@pgbouncer:6432/${POSTGRES_DB:-fleet} TRACKSOLID_API_BASE_URL: ${TRACKSOLID_API_BASE_URL} ports: - "8003:8000" volumes: - ./app:/srv/app/app depends_on: pgbouncer: condition: service_started volumes: db_data: