Skip to main content

Prerequisites

Before creating an application:

Overview

An application is a container unit that is part of a Project within an Environment. You can deploy multiple applications within the same environment, and they can communicate with each other and connect to databases.

Deployment Sources

Qovery supports two deployment sources for applications:

Git Repository

Qovery pulls your code from a Git repository, builds the application, and deploys it to your Kubernetes cluster. Supported Providers: GitHub, GitLab, Bitbucket

Container Registry

Qovery pulls a pre-built container image from your configured registry and deploys it to your Kubernetes cluster.
Container registries must be configured at the organization level by administrators. See Container Registry Management.

Creating an Application

1

Select Source

Choose Git Repository or Container Registry as your deployment source
2

Configure Source

For Git Repository:
  • Select Git provider
  • Choose repository
  • Select branch
  • Specify root application path (if not at repository root)
  • Configure Dockerfile path
For Container Registry:
  • Select configured registry
  • Enter image name
  • Specify image tag
3

Configure Resources

  • vCPU: Default 500m (0.5 cores)
  • RAM: Default 512MB
  • GPU: Optional GPU allocation (requires GPU-enabled cluster)
  • Auto-scaling: Configure min/max instances (optional)
4

Configure Ports

  • Internal Port: Port your application listens on
  • Protocol: HTTPS, gRPC, TCP, or UDP
  • Publicly Accessible: Enable to expose via load balancer
5

Health Checks (Optional)

  • Liveness Probe: Determines if container should be restarted
  • Readiness Probe: Determines if container should receive traffic
6

Environment Variables

Configure environment variables for your application
7

Review and Deploy

Review configuration and choose:
  • Create: Save configuration without deploying
  • Create and Deploy: Save and immediately deploy

Configuration

General Settings

Git Repository Configuration:
  • Git provider and repository
  • Branch selection
  • Root application path
  • Dockerfile path
  • Build arguments
  • Multi-stage build target selection
Container Registry Configuration:
  • Registry selection
  • Image name
  • Image tag
  • Entrypoint override
  • CMD arguments override

Resources

CPU and Memory

  • vCPU allocation: Configure in millicores (e.g., 500m = 0.5 cores)
  • RAM allocation: Configure in MB or GB
  • Adjust based on your application’s resource requirements

GPU

Requirements: AWS with Karpenter enabled
  • Number of GPUs per instance
  • Ideal for AI/ML workloads
  • Available GPU types depend on your cluster configuration

Instances & Autoscaling

Qovery offers three autoscaling modes to match your application’s needs:
Not recommended for production workloads. A single instance has no redundancy—if the pod fails or the node undergoes maintenance, your application will be temporarily unavailable.For high availability:
  • Set minimum instances to 2 if your app can run on 1 instance
  • Set minimum instances to 3 or higher if your app requires multiple instances to handle necessary traffic
  • This ensures redundancy during node maintenance or pod failures
Note: KEDA (Event-Driven) autoscaling supports setting minimum instances to 0 for scale-to-zero capability on sporadic workloads.

Fixed Number of Instances (No Autoscaling)

Your application runs with a fixed number of instances.Configuration:
  • Set the number of instances to run
  • No automatic scaling occurs
Use Cases:
  • Development environments
  • Proof of concepts (POC)
  • Testing and experimentation

Storage

Ephemeral Storage (default):
  • Container filesystem
  • Data lost on restart
  • Use for temporary files and caches
Persistent Storage:
  • Block storage volumes
  • Data persists across restarts
  • Configure mount path and size
  • SSD storage type (fast_ssd)
  • Typical range: 5GB-10GB
Persistent storage cannot be shared between replicas. For shared storage, use external services like S3 or blob storage.

Ports

Configure network exposure for your application: Port Configuration:
  • Internal Port: Port your application listens on
  • External Port: HTTPS defaults to 443, HTTP to 80
  • Protocol: HTTP/HTTPS, gRPC, TCP, UDP
  • Publicly Accessible: Toggle to expose via load balancer
  • URL Rewriting: Configure path rewriting (optional)
For HTTP and gRPC protocols, the external port is set to 443 by default with automatic TLS.
Connection Timeouts: Connections on public ports are automatically closed after 60 seconds by default. Configure custom timeouts in advanced settings for long-lived connections.
TCP/UDP Ports: Exposing TCP/UDP ports publicly requires provisioning a dedicated load balancer, which takes approximately 15 minutes and incurs additional cloud provider costs.

Health Checks

Liveness Probe:
  • Determines if container should be restarted
  • Configure endpoint, port, initial delay, and intervals
Readiness Probe:
  • Determines if container should receive traffic
  • Configure endpoint, port, initial delay, and intervals

Deployment Restrictions

Configure when deployments should be triggered:
  • File path filters: Deploy only when specific files change
  • Branch filters: Deploy only from specific branches

Internet Connectivity

Qovery-Assigned Domains

Every publicly accessible application receives an automatic domain with TLS certificate:
<app-name>-<random-id>.<cluster-id>.qovery.io

Custom Domains

Add your own custom domain to your application:
1

Add Domain

Navigate to application settings → Domains → Add Domain
2

Configure DNS

Create a CNAME record in your DNS provider:
CNAME: your-domain.com → <app-name>.<cluster-id>.qovery.io
3

Verify

Qovery automatically validates DNS configuration and provisions SSL/TLS certificate

CDN Proxy Mode

Enable CDN proxy mode for custom domains to route traffic through your CDN provider.

Additional Features

Service Connections

Applications can connect to:
  • Databases within the same environment
  • Other applications within the same environment
  • External services via environment variables
Connection details are automatically injected as environment variables. See Environment Variables.

SSH Access

Access running containers via SSH using the Qovery CLI:
qovery shell

Clone Service

Duplicate an application configuration to the same or different environment. Cloning copies:
  • General configuration
  • Resource settings
  • Port configuration
  • Storage configuration
  • Build settings
Cloning excludes custom domains and some built-in environment variables to prevent conflicts.

Advanced Settings

Configure advanced options including:
  • Build timeout and resources
  • Deployment strategy
  • Network settings
  • Node affinity
  • Annotations and labels
See Service Advanced Settings for details.

Delete Application

To delete an application:
  1. Navigate to application settings
  2. Click Delete Application
  3. Confirm deletion
Deleting an application is permanent and cannot be undone. All associated data and configurations will be removed.