version: '3.8' networks: asset_helper_net: driver: bridge volumes: postgres_data: redis_data: services: postgres: image: postgres:18.3-alpine3.23 environment: POSTGRES_USER: ${POSTGRES_USER:-admin} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password} POSTGRES_DB: ${POSTGRES_DB:-postgres} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U admin"] interval: 30s timeout: 3s start_period: 5s retries: 3 restart: always networks: - asset_helper_net redis: image: redis:8.6.2-alpine volumes: - redis_data:/data healthcheck: test: ["CMD-SHELL", "redis-cli ping"] interval: 30s timeout: 3s start_period: 5s retries: 3 restart: always networks: - asset_helper_net user-service: build: context: ./services/user-service depends_on: postgres: condition: service_healthy redis: condition: service_healthy environment: - POSTGRES_USER=${POSTGRES_USER:-admin} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} - REDIS_URL=${REDIS_URL:-redis://redis:6379/0} - GRPC_PORT=${GRPC_PORT:-50051} restart: always networks: - asset_helper_net gateway: build: context: ./services/gateway ports: - "8000:8000" depends_on: user-service: condition: service_started redis: condition: service_healthy environment: - REDIS_URL=${REDIS_URL:-redis://redis:6379/0} - HTTP_PORT=${HTTP_PORT:-8000} - DEBUG=False - ENV=production restart: always networks: - asset_helper_net