version: '3.8' services: api: build: context: ./packages/backend target: production environment: - NODE_ENV=production - PORT=3001 - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@postgres:5432/traqora - REDIS_URL=redis://redis:6379 - CORS_ORIGIN=${CORS_ORIGIN:-https://app.example.com} - HORIZON_URL=${HORIZON_URL:-https://horizon.example.com} - SOROBAN_RPC_URL=${SOROBAN_RPC_URL:-https://horizon.example.com/soroban/rpc} - STELLAR_NETWORK=public - JWT_SECRET=${JWT_SECRET} depends_on: postgres: condition: service_healthy redis: condition: service_healthy networks: - traqora-network restart: always frontend: build: context: ./packages/client target: production environment: - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL:-https://api.example.com} - NEXT_PUBLIC_STELLAR_NETWORK=public - NEXT_PUBLIC_HORIZON_URL=${NEXT_PUBLIC_HORIZON_URL:-https://horizon.example.com} ports: - "3000:3000" depends_on: - api networks: - traqora-network restart: always postgres: image: postgres:15-alpine environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=traqora volumes: - postgres_data:/var/lib/postgresql/data networks: - traqora-network healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 restart: always redis: image: redis:7-alpine networks: - traqora-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 restart: always networks: traqora-network: driver: bridge volumes: postgres_data: