How to Deploy an Application
This guide walks through the complete process of deploying a containerized application to the Strongly platform.
Prerequisites
Before deploying, ensure you have:
- Your application code in a directory
- A
Dockerfilein the project root - A
strongly.manifest.yamlconfiguration file - Optional:
.envfile for environment variables
Step 1: Navigate to Apps
- Click Apps in the main navigation
- Click Deploy App button
Step 2: Configure Your App
Basic Information
Provide essential metadata about your application:
- App Name: Unique identifier (lowercase, alphanumeric, hyphens only)
- Description: Brief description of your app
- Environment: Select an environment (uses custom
environmentIdfor compute resource provisioning)
App names must be lowercase and can only contain alphanumeric characters and hyphens. No spaces or special characters.
Upload Code
Upload your application code as a compressed archive, connect a GitHub repository, or use a project bundle:
Archive upload:
- Accepted formats:
.zip,.tar,.tar.gz,.tgz - Required files:
Dockerfile(in project root)strongly.manifest.yaml(in project root)
- Optional:
.envfile for environment variables
Other sources:
- GitHub: Connect a GitHub repository directly
- Project bundle: Deploy from platform project bundles
Ensure your Dockerfile and manifest are in the root of the archive, not in a subdirectory.
Resource Configuration
Select a resource tier or configure custom resources:
| Tier | CPU | Memory | Disk | Use Case |
|---|---|---|---|---|
| Small | 0.5 | 512MB | 5GB | Development, testing |
| Medium | 1 | 1GB | 10GB | Small production apps |
| Large | 2 | 2GB | 20GB | Production apps with moderate traffic |
| XLarge | 4 | 4GB | 40GB | High-traffic production apps |
| Custom | - | - | - | Specialized requirements (including GPU) |
Instances: Set the number of replicas (1-10) for high availability. Each instance runs on its own pod.
GPU support: For compute-intensive workloads, configure GPU resources in the manifest's resources section with the gpu field.
Step 3: Connect Services (Optional)
Connect your app to platform services - all connections are automatically injected via the STRONGLY_SERVICES environment variable.
Add-ons (Managed Databases)
- Click Add-ons button during app configuration
- Select from available MongoDB, Redis, PostgreSQL, and other instances
- Connection strings automatically injected
Data Sources (External Databases)
- Connect to external MySQL, PostgreSQL, S3, Snowflake, etc.
- Credentials encrypted and injected at runtime
AI Models (AI Gateway)
- Select from available OpenAI, Anthropic, or self-hosted models
- API endpoints and configuration automatically provided
- Usage tracked through platform
ML Models (Model Registry)
- Connect traditional or AutoML models from the model registry
- Inference endpoints automatically configured
Workflows (REST API Triggers)
- Connect workflows with REST API trigger nodes
- Invoke workflows from your app code
- Automatic authentication and execution tracking
MCP Servers
- Connect MCP (Model Context Protocol) servers
- Access tools, prompts, and resources from your application
Step 4: Deploy & Monitor
- Review Configuration: Check all settings before deployment
- Click Deploy: Initiate build and deployment process
- Monitor Build: Watch build progress via SSE streaming (timeout: 20 minutes)
- Access App: Once deployed, click "View App" or navigate to
/apps/your-app-id/view
Build Process
The platform automatically:
- Extracts your code archive (or clones from GitHub)
- Builds Docker image using your Dockerfile (via Kaniko in Kubernetes)
- Pushes image to ECR (container registry)
- Creates Kubernetes Deployment, Service, and PodDisruptionBudget
- Injects environment variables and service connections (including
STRONGLY_SERVICES) - Starts health checks
Build progress is streamed in real-time via Server-Sent Events (SSE).
Builds must complete within 20 minutes. Optimize your Dockerfile with multi-stage builds and layer caching to reduce build time.
Build Status Flow
Builds progress through the following statuses:
pending -> building -> completed
-> failed
-> cancelled
-> timeout
App Management
Start/Stop/Restart
Use the available actions to manage your application lifecycle:
apps.startApp: Start a stopped applicationapps.stopApp: Stop a running applicationapps.restartApp: Restart an application (stop then start)apps.deploy: Deploy or redeploy an application
Update Configuration
Update your running application:
- Update environment variables
- Scale instances up or down
- Add or remove connected services
- Redeploy to apply changes
Configuration changes require redeployment. The existing deployment is deleted first and a new one is created.
View Logs & Metrics
Monitor your application in real-time:
- Real-time log streaming
- CPU and memory usage percentages
- Ready and total replica counts
- Health check status
Common Deployment Issues
Build Fails
- Check Dockerfile syntax
- Ensure all dependencies are accessible
- Verify build context includes all required files
- Check build logs for specific errors
App Builder Unreachable
If you see an app-builder-unreachable error:
- The app builder backend service is not responding
- Check that the app builder service is running
- Verify network connectivity between frontend and backend
App Won't Start
- Verify health check endpoint is accessible
- Check application logs for startup errors
- Ensure environment variables are set correctly
- Verify port configuration matches manifest
Connection Issues
- Check
STRONGLY_SERVICESenvironment variable is properly parsed - Verify credentials and connection strings
- Test connectivity from app terminal