services: postgres: image: postgres:16-alpine container_name: ubigeo-postgres restart: unless-stopped environment: POSTGRES_USER: ubigeo_user POSTGRES_PASSWORD: UbigeoDB2026 POSTGRES_DB: ubigeo_db volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ubigeo_user -d ubigeo_db"] interval: 10s timeout: 5s retries: 5 networks: - ubigeo_network - easypanel redis: image: redis:7-alpine container_name: ubigeo-redis restart: unless-stopped command: > redis-server --maxmemory 128mb --maxmemory-policy allkeys-lru --appendonly yes --appendfsync everysec volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 5 networks: - ubigeo_network api: image: ubigeo-api:latest container_name: ubigeo-api restart: unless-stopped ports: - "127.0.0.1:3200:3200" environment: DATABASE_URL: "postgresql://ubigeo_user:UbigeoDB2026@postgres:5432/ubigeo_db" REDIS_URL: "redis://ubigeo-redis:6379" PORT: 3200 NODE_ENV: production depends_on: postgres: condition: service_healthy redis: condition: service_healthy networks: - ubigeo_network - easypanel volumes: postgres_data: redis_data: networks: ubigeo_network: driver: bridge easypanel: external: true