Configure multi-platform deployment for FastAPI applications including Docker containerization, Railway, DigitalOcean App Platform, and AWS deployment. Use when deploying FastAPI apps, setting up production environments, containerizing applications, configuring cloud platforms, implementing health checks, managing environment variables, setting up reverse proxies, or when user mentions Docker, Railway, DigitalOcean, AWS, deployment configuration, production setup, or container orchestration.
Limited to specific tools
Additional assets for this skill
This skill is limited to using the following tools:
README.mdexamples/aws_setup.mdexamples/digitalocean_setup.mdexamples/railway_setup.mdscripts/build-docker.shscripts/health-check.shscripts/validate-deployment.shtemplates/Dockerfiletemplates/digitalocean-app.yamltemplates/docker-compose.ymltemplates/nginx.conftemplates/railway.jsonPurpose: Autonomously configure and deploy FastAPI applications across multiple platforms with production-ready configurations.
Activation Triggers:
Key Resources:
scripts/build-docker.sh - Multi-stage Docker build automationscripts/validate-deployment.sh - Pre-deployment validation checksscripts/health-check.sh - Application health verificationtemplates/ - Production-ready Dockerfile, docker-compose.yml, platform configsexamples/ - Platform-specific deployment guides (Railway, DigitalOcean, AWS)Run comprehensive checks before deployment:
./scripts/validate-deployment.sh
# Validates:
# - Python dependencies (requirements.txt)
# - Environment variables (.env.example)
# - FastAPI application structure
# - Database migrations (if using Alembic)
# - Static file configuration
# - CORS settings
# - Security configurations
Common issues detected:
Build optimized Docker image using multi-stage builds:
./scripts/build-docker.sh [--platform=linux/amd64] [--tag=myapp:latest]
# Features:
# - Multi-stage build (builder + runtime)
# - Layer caching optimization
# - Non-root user for security
# - Health check integration
# - Minimal production image size
Dockerfile template (templates/Dockerfile):
# Railway uses railway.json for configuration
# See: examples/railway_setup.md
# Key features:
# - Automatic HTTPS
# - Environment variable management
# - Auto-deploy from Git
# - Database provisioning
# - Custom domains
Configuration: templates/railway.json
pip install -r requirements.txtuvicorn main:app --host 0.0.0.0 --port $PORT/health# DigitalOcean uses app.yaml for configuration
# See: examples/digitalocean_setup.md
# Key features:
# - Container registry integration
# - Managed databases
# - Auto-scaling
# - CDN integration
# - Monitoring & alerts
Configuration: templates/digitalocean-app.yaml
ECS (Elastic Container Service):
# See: examples/aws_setup.md#ecs-deployment
# Features:
# - Fargate serverless containers
# - Load balancer integration
# - Auto-scaling policies
# - CloudWatch logging
# - VPC networking
App Runner:
# Simplified container deployment
# Automatic scaling and load balancing
# See: examples/aws_setup.md#app-runner
Implement comprehensive health checks:
./scripts/health-check.sh <endpoint-url>
# Checks:
# - HTTP endpoint availability (GET /health)
# - Database connectivity
# - Redis/cache availability
# - External API dependencies
# - Response time monitoring
Health endpoint template:
@app.get("/health")
async def health_check():
return {
"status": "healthy",
"version": "1.0.0",
"database": check_db(),
"cache": check_redis()
}
Required environment variables:
DATABASE_URL - Database connection stringSECRET_KEY - Application secret keyCORS_ORIGINS - Allowed CORS originsENVIRONMENT - prod/staging/devLOG_LEVEL - Logging verbosityTemplates provided:
.env.example - Development template.env.production.example - Production templateFor self-hosted deployments:
# Nginx configuration: templates/nginx.conf
# Features:
# - SSL/TLS termination
# - Rate limiting
# - Request buffering
# - Gzip compression
# - Static file serving
# - WebSocket support
# - Security headers
Configuration highlights:
For local development and testing:
docker-compose up -d
# Services configured:
# - FastAPI application
# - PostgreSQL database
# - Redis cache
# - Nginx reverse proxy
Template: templates/docker-compose.yml
Stage 1: Builder
Stage 2: Runtime
Gunicorn + Uvicorn:
# Recommended workers: (2 x CPU cores) + 1
gunicorn main:app \
--workers 4 \
--worker-class uvicorn.workers.UvicornWorker \
--bind 0.0.0.0:8000 \
--access-logfile - \
--error-logfile - \
--log-level info
# SQLAlchemy configuration
engine = create_engine(
DATABASE_URL,
pool_size=10,
max_overflow=20,
pool_pre_ping=True
)
Implemented in templates:
| Feature | Railway | DigitalOcean | AWS ECS | AWS App Runner |
|---|---|---|---|---|
| Ease of Setup | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| Cost (Low Traffic) | $5-10/mo | $12/mo | $20-30/mo | $15-25/mo |
| Auto-Scaling | Limited | Yes | Yes | Yes |
| Database Included | Yes (add-on) | Yes (managed) | Separate (RDS) | Separate (RDS) |
| Custom Domains | Yes | Yes | Yes | Yes |
| CI/CD | Git-based | Container registry | CodePipeline | Git/ECR |
Recommended: Railway or AWS App Runner
Recommended: Railway or DigitalOcean
Recommended: AWS ECS or DigitalOcean App Platform
Recommended: AWS ECS with RDS
# Check Docker build logs
./scripts/build-docker.sh --verbose
# Common fixes:
# - Update requirements.txt versions
# - Check Python version compatibility
# - Verify base image availability
# Debug health endpoint
./scripts/health-check.sh http://localhost:8000/health --debug
# Common issues:
# - Database connection timeout
# - Missing environment variables
# - Port binding conflicts
# Monitor worker utilization
# Increase Gunicorn workers
# Enable connection pooling
# Implement caching (Redis)
# Optimize database queries
Scripts: All scripts are executable and include help documentation (--help)
Templates: Production-ready configurations in templates/ directory
Examples: Detailed platform-specific guides in examples/ directory
railway_setup.md - Complete Railway deployment walkthroughdigitalocean_setup.md - DigitalOcean App Platform setupaws_setup.md - AWS ECS and App Runner deploymentSupported Platforms: Railway, DigitalOcean App Platform, AWS ECS, AWS App Runner, Self-hosted (Docker + Nginx)
FastAPI Version: 0.104.0+ Python Version: 3.11+ Docker Version: 20.10+