Deployment: hbf-nlp
Infrastructure config for this service. Full platform deployment:
docs/architecture/deployment.md
Runtime
- Port: 3000 (docker-compose) / 2055 (NestJS SERVICE_PORT)
- Base image: node:22-slim (multi-stage)
- Start command:
npm run start:prod - Health check: none defined
Required Environment Variables
| Variable | Example | Description |
|---|---|---|
| SERVICE_PORT | 2055 | NestJS listen port |
| SERVICE_LOG_LEVEL | Application log level | |
| HBF_CORE_URL | Core service base URL | |
| HBF_CORE_API_TOKEN | Auth token for core service | |
| AZURE_OPENAI_ENDPOINT | Azure OpenAI endpoint URL | |
| AZURE_OPENAI_DEPLOYMENT_NAME | gpt-4o-mini | Azure OpenAI deployment name |
| AZURE_OPENAI_API_VERSION | Azure OpenAI API version | |
| AZURE_OPENAI_API_KEY | Azure OpenAI API key | |
| SESSION_ANALYSIS_DEFAULT_MODEL | Default model for session analysis | |
| LLM_API_VERSION | LLM API version | |
| JWT_SECRET | JWT signing secret | |
| CACHE_REDIS_ENABLED | Enable Redis caching | |
| CACHE_REDIS_URL | Redis connection URL | |
| CACHE_TTL | Cache TTL in seconds | |
| PINO_LOGGER_USE | Enable Pino structured logging | |
| PINO_LOGGER_LEVEL | Log level | |
| NOTIFICATIONS_SERVICE_URL | Notification service base URL | |
| NOTIFICATION_SERVICE_API_TOKEN | Auth token for notification service | |
| TYPEORM_CONNECTION | mysql | TypeORM connection type |
| TYPEORM_HOST | MySQL host | |
| TYPEORM_PORT | MySQL port | |
| TYPEORM_USERNAME | MySQL username | |
| TYPEORM_PASSWORD | MySQL password | |
| TYPEORM_DATABASE | nlp | MySQL database name |
| TYPEORM_AUTORUN_MIGRATIONS | Run migrations on startup |
Docker
# Build
docker build -t hbf-nlp .
# Run (local dev)
docker compose up
docker-compose runs the service only (env vars loaded from .env file).
CI/CD
- Trigger: push to main/staging/develop
- Steps: SonarQube audit -> Docker build -> Push to ECR -> Deploy to EKS
- Deploy target: AWS EKS (helvia-dev, helvia-stg, helvia)
- Rollout timeout: 900s (longer than the standard 600s)
Notes
- Uses Azure OpenAI for LLM inference (NLU pipeline, session analysis).
- Connects to MySQL for NLU pipeline configuration storage.
- docker-compose exposes port 3000, but NestJS listens on SERVICE_PORT (2055 by default).
- 900s rollout timeout due to longer startup or migration time.