API Deployment
Local Deployment (Preferred)
Deploy locally for speed, push to main to true everything up.
Prerequisites
# Start Colima (lightweight Docker daemon)
colima start --cpu 2 --memory 4
# Login to ECR
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 255982108053.dkr.ecr.us-east-1.amazonaws.com
Build and Deploy
cd statux-api
# Statux Pages
docker build -f Dockerfile.statuspages -t 255982108053.dkr.ecr.us-east-1.amazonaws.com/statux-api:latest .
docker push 255982108053.dkr.ecr.us-east-1.amazonaws.com/statux-api:latest
aws autoscaling start-instance-refresh --auto-scaling-group-name statux-prod-asg-api --preferences '{"MinHealthyPercentage":50,"InstanceWarmup":120}'
# Alerting
docker build -f Dockerfile.alerting -t 255982108053.dkr.ecr.us-east-1.amazonaws.com/statux-alerts-api:latest .
docker push 255982108053.dkr.ecr.us-east-1.amazonaws.com/statux-alerts-api:latest
aws autoscaling start-instance-refresh --auto-scaling-group-name statux-prod-asg-alerts-api --preferences '{"MinHealthyPercentage":50,"InstanceWarmup":120}'
# Synthetics
docker build -f Dockerfile.synthetics -t 255982108053.dkr.ecr.us-east-1.amazonaws.com/statux-synthetics-api:latest .
docker push 255982108053.dkr.ecr.us-east-1.amazonaws.com/statux-synthetics-api:latest
aws autoscaling start-instance-refresh --auto-scaling-group-name statux-prod-asg-synthetics-api --preferences '{"MinHealthyPercentage":50,"InstanceWarmup":120}'
Reference
| App | Dockerfile | ECR Repo | ASG |
|---|---|---|---|
| Statux Pages | Dockerfile.statuspages | statux-api | statux-prod-asg-api |
| Alerting | Dockerfile.alerting | statux-alerts-api | statux-prod-asg-alerts-api |
| Synthetics | Dockerfile.synthetics | statux-synthetics-api | statux-prod-asg-synthetics-api |
CodeBuild (Push to Main)
Push to main triggers CodeBuild automatically:
| App | Project | Trigger Path |
|---|---|---|
| Statux Pages | statux-prod-codebuild-api-statuspages | apps/statuspages/**, libs/** |
| Alerting | statux-prod-codebuild-api-alerting | apps/alerting/**, libs/** |
| Synthetics | statux-prod-codebuild-api-synthetics | apps/synthetics/**, libs/** |
Monitoring Deployment
# Watch ASG refresh status
aws autoscaling describe-instance-refreshes \
--auto-scaling-group-name statux-prod-asg-api \
--query 'InstanceRefreshes[0]'