App Platform is a Platform-as-a-Service (PaaS) offering that allows developers to publish code directly to DigitalOcean servers without worrying about the underlying infrastructure.
The host instances running App Platform containers do not provide persistent data storage. Data in the host instance’s local filesystem is permanently lost after deployments and other container replacements. The local filesystem is additionally limited to 2GiB, and if it is filled to capacity, the container is detected as unhealthy and replaced.
Apps should only use the host instance’s local filesystem for small amounts of temporary storage. For persistent storage, you can use Spaces Object Storage or DigitalOcean Managed Databases.
File uploads to apps timeout after 100 seconds.
App Platform does not support volumes.
App Platform allocates 4 CPU cores, 10 GiB of memory, and 24 GiB of disk space to each build. Processes related to managing the build and its export consume a small portion of these resources, so the build itself may have access to a slightly smaller amount of resources than listed here. If you require more resources for builds, you can use GitHub Actions or other CI/CD tools to externally build containers and push them to App Platform.
Builds time out after 1 hour.
We do not limit the size of images deployed to App Platform, but we recommend using images less than 1 GiB in size. Images larger than 2 GiB are likely to experience build and deployment issues.
Autoscaling is only available for app components using dedicated CPUs.
App Platform can only integrate with GitHub repositories, GitLab repositories, or public Git repositories over HTTPS. Support for other source providers is planned.
App Platform does not support auto-deployment of images from Docker Hub repositories or from GitHub Registry. If you need to auto deploy for your images, consider using DigitalOcean Container Registry.
Git submodules that reference SSH path style repos fail to build. Replace SSH submodule links with HTTPS to avoid this limitation.
You must store private git submodules in the GitHub account you have authorized App Platform to use. Referencing private git submodules that the authorized GitHub account cannot access causes the build to fail.
You must have an Owner or Maintainer permissions-role in any GitHub repository that you want to access from App Platform.
Dev database cluster permissions do not allow you to create additional databases. You can only use the cluster’s default database. If you need additional databases in your cluster, consider using a DigitalOcean Managed Database, instead.
App Platform’s engine support for dev databases is currently limited to PostgresSQL, but you can create a PostgresSQL, MySQL, Caching, MongoDB, or Kafka managed database with DigitalOcean for use in your app.
Dev databases are located in the same region as your app and cannot be migrated to another region. If you migrate your app to a different region, the app won’t be able to access the associated dev database anymore. If you need to migrate your app and dev database, we recommend either backing up the contents of the database and restoring it after the app’s migration, or using a DigitalOcean Managed Database instead. You can migrate managed databases independently of apps to different regions as needed.
App Platform does not support connecting to DigitalOcean Managed Databases during the build process if the database has trusted sources enabled. This is because the app’s network configuration information can only be provided to the database’s trusted sources list after the app has been built.
App Platform does not currently support connections to Kafka databases that have trusted sources enabled. You must disable trusted sources on the Kafka database before it can be integrated with an App Platform app.
MongoDB database names cannot contain capital letters when adding them using an app spec.
Apps deployed on App Platform are not connected to VPC networks. All connections from apps to other services running on DigitalOcean occur over the public network, including connections between apps and DigitalOcean Managed Databases. See How to Manage Databases in App Platform for detailed instructions about how to connect apps to databases.
App Platform does not directly support adding 301
and 302
redirects. However, you can work around this by creating a free app that redirects traffic to another domain.
We do not offer dedicated egress IPv6 addresses.
App Platform apps do not support connecting to IPv6 services or hosts.
App Platform does not support adding DNSSEC enabled domains to apps.
Dedicated egress IPs are an app-level feature. When you assign them to an app, all egress (outgoing) traffic from the app’s components use the addresses assigned to the app, except for functions. Egress traffic from functions cannot use dedicated egress IPs and their own addresses can change at any time.
You cannot forward logs from dedicated egress IPs. Log forwarding uses its own routing to send logs.
Browsers aggressively cache redirects, and as such you may need to clear your cache and hard refresh to see changes in your redirect configuration.
App Platform only supports high availability (HA) for apps running two or more containers so that there is a failover for App Platform’s load balancer to use.
You cannot open SSH or SFTP ports on App Platform containers. You must deploy code changes through your code repository or container image.
You cannot open SMTP ports on App Platform containers.
App Platform supports HTTP/2, however you need to configure your app to use the protocol. App Platform’s edge servers negotiate HTTP/2 connections from supported clients, but if your app is not configured to receive these requests, App Platform downgrades these requests to HTTP/1.1 when relayed to the app’s container. Apps support gRPC once you have enabled HTTP/2.
App Platform’s edge servers negotiate HTTP/2 and HTTP/3 connections from supported clients. However, App Platform downgrades these requests to HTTP/1.1 when relayed to an app’s container. We do not support gRPC over HTTP/2.
App Platform does not support streaming connections using HTTP/1.1 due to caching issues at the edge. We recommend using websockets for interactive connections.
While App Platform automatically upgrades all HTTP requests to HTTPS requests, it does not set HTTP Strict-Transport-Security (HSTS) headers for apps. If you want to set HSTS headers for your app, you need to set the headers in your app’s code. All apps hosted on the .ondigitalocean.app
domain automatically behave as if HSTS has been set as the .app
TLD is on the HSTS preload list.
We do not limit the number of concurrent connections to your app, but each connection consumes system resources and may affect your app’s performance when it is under heavy load. If you are experiencing performance issues related to large numbers of concurrent connections, we recommend scaling your app to better handle the work load.
Apps are hosted in the region you select during the initial deployment but the app’s IP address may appear to be in a US region. This is expected behavior as App Platform routes traffic to apps through Cloudflare’s global CDN, a US-based company. Learn more about why apps have US-based IP addresses.
App Platform does not officially support node clustering, such as Erlang clustering. This is because we currently don’t expose a way to discover the cluster nodes.
App Platform does not currently support injecting values on disk at build time. However, you can use environment variables to inject values at runtime using runtime commands.
You cannot increase or decrease resources for static sites. App Platform deploys and serves static sites using DigitalOcean’s Spaces CDN, as they do not require a container or runtime. You can only increase or decrease resources for service, worker, and job components.
Configuration changes that redeploy your app also trigger a pull of the latest source code from your repo. This is by design.
App Platform only supports binaries built for the AMD64 CPU architecture.
App Platform uses the gVisor container runtime sandbox and some system calls are not supported.
App Platform does not support resource usage reporting with PM2 in Node.js apps. Instead, use the Insights tab to see insights such as memory and CPU usage.
You must explicitly start system-level cron jobs using your app’s run commands. cron jobs do not start automatically like on standard Linux systems.
App Platform does not currently support changing time zones for build and runtime logs, which are displayed in UTC.