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.
App Platform can either automatically analyze and build code from your GitHub, GitLab or public Git repositories and publish your application to the cloud, or publish a container image you have already uploaded to DigitalOcean Container Registry. It also has lifecycle management features, vertical and horizontal scaling, push-to-deploy support, introspection and monitoring features, built-in database management and integration — everything a developer needs to get code live in production.
App Platform has three pricing tiers:
If your dynamic app has static site components, all of them will be deployed at no additional charge on the Basic and Professional tiers.
An app is made up of one or more components like web services, databases, or workers. When you run an app, we deploy an instance (i.e., a container) for each of the components. The table below shows the monthly pricing per container and the available container sizes for the Basic and Professional tiers.
CPU Type | CPUs | RAM | Basic Price | Professional Price |
---|---|---|---|---|
Shared | 1 | 512 MiB | $5 | Not available |
Shared | 1 | 1 GiB | $10 | $12 |
Shared | 1 | 2 GiB | $20 | $25 |
Shared | 1 | 4 GiB | Not available | $50 |
Dedicated | 2 | 8 GiB | Not available | $150 |
Dedicated | 4 | 16 GiB | Not available | $300 |
If you need more resources than what is included in the Starter, Basic, and Professional tiers, then the following prices apply.
Additional development databases are $7/mo per 256MB database. Additional outbound data transfer is $0.10/month for 1 GiB. You can view the pricing for DigitalOcean Managed Databases and Spaces (object storage) on the pricing page.
You can deploy App Platform apps to our Amsterdam, Frankfurt, New York, and San Francisco regions.
App Platform is ideal for developers that want to focus on shipping code, and prefer the simplicity of linking their GitHub, GitLab, public Git repository, or container registry to App Platform and letting DigitalOcean build and deploy their app in the cloud.
You can provide a Dockerfile for DigitalOcean to use in the build process, provide an already-built container image, or let us inspect the code and automatically build the app for you. From there, apply the proper settings so that the build runs (such as routing details, custom domains, and environment variables) and add a database to your solution in the user interface.
Feature | Starter | Basic | Professional |
---|---|---|---|
Build and deploy static assets | ■ | ■ | ■ |
Build and deploy dynamic apps (e.g. Node.js, Python, Go, Ruby, PHP, Docker) |
■ | ■ | |
Continuous deployment from Git repository | ■ | ■ | ■ |
Automatic SSL/TLS certificates (HTTPS) | ■ | ■ | ■ |
Bring your custom domain | ■ | ■ | ■ |
Global CDN for performance | ■ | ■ | ■ |
DDoS mitigation | ■ | ■ | ■ |
Unlimited team members | ■ | ■ | ■ |
Application metrics | Hourly | Hourly | Per-minute |
CPU | Shared | Shared or dedicated | |
Auto OS patching | ■ | ■ | |
Vertical scaling | ■ | ■ | |
Horizontal scaling | ■ | ||
High availability | ■ | ||
Outbound transfer | 1 GiB | 40 GiB | 100 GiB |
App Platform allows you to hook up your source code repo and deploy using a cloud-hosted build system that automatically detects the needed environment to run your app.
App Platform automatically downloads and installs any necessary frameworks at build time for supported environments. You can try our sample applications to see App Platform's auto-detection and cloud builds in action.
App Platform apps can be scaled horizontally (adding more instances that serve your app), and vertically (beefing up the instances with more CPU and memory resources), at any time, by simply visiting your app's deployment in the dashboard. For details, see the scaling instructions in the Quickstart
While you can control the scaling of your app, manage the individual services that comprise your app, and integrate databases using App Platform, that may not be enough. App Platform is optimized for ease of code deployment rather than deep customization of the underlying infrastructure. Teams that require more control over their production environment and the design and behavior of their infrastructure may prefer one of our other two compute options:
DigitalOcean Kubernetes gives users control of a managed Kubernetes cluster that can run their container-based applications. It supports private registries, autoscaling, and push-to-deploy (through GitHub actions). It also provides a DigitalOcean-hosted instance of the Kubernetes dashboard for each cluster, and replaces the concept of “master nodes” with a node pool that manages capacity for you, resulting in a Kubernetes experience that is significantly simpler than the native experience.
You can build your own infrastructure solution that uses Droplets (Linux based virtual machines) for compute capacity. Common techniques and workflows for configuration management tools like Terraform and Ansible are covered in the Navigator's Guide. You can also get a sense of how the various products work together by reading the Solutions guides.
The local filesystem on the host instances running App Platform containers is ephemeral. When deployments happen or containers are replaced the local disk storage will be LOST and not recoverable. To use App Platform you must re-implement or reconfigure your app to use other forms of persistent storage such as Spaces or Managed Databases. The local disk should only be used as temporary storage.
App Platform can only integrate with GitHub repositories or public Git repositories over HTTPS. Support for other source providers is planned.
App Platform does not support block storage volumes.
Your dev database permissions will not allow you to create databases; instead you will need to use the default database.
App Platform applications do not have a persistent IP address.
Configuration changes that result in a redeployment of your app will not also trigger a pull of the latest source code from your repo. This is by design.
High availability (HA) is only supported for Professional apps when running two or more containers so that there is a failover for App Platform's load-balancer to use. If you require HA when using Starter or Basic apps, you must upgrade your app to the Professional tier.
App Platform's engine support for dev databases is currently limited to PostgresSQL, but you can create a PostgresSQL, MySQL, or Redis managed database with DigitalOcean for use in your app.
Git submodules that reference SSH path style repos fail to build. Users will need to replace SSH submodule links with HTTPS.
Private Git submodules may fail to build. If you attempt to reference private git submodules that are not accessible via the authenticated GitHub account you have connected, builds will fail. You must have your private git submodules stored in the GitHub account you have authorized App Platform to use.
App Platform apps with custom domains can use Cloudflare for DNS but they cannot make use of Cloudflare's CDN (orange-cloud zone); instead they must use App Platform's built-in CDN functionality by configuring a gray-cloud DNS zone.
Browsers aggressively cache redirects, and as such you may need to clear your cache and hard refresh to see changes in your redirect configuration.
Currently, App Platform does not support VPC. All connections from apps to other services running in DigitalOcean occur over the public network.
Improved build caching for all App Platform build environments. Dependencies and other data are now cached and reused between builds to improve performance. Dockerfile builds continue to make use of Docker layer caching.
The Hugo buildpack received some updates:
0.78.0
.We have released a “Deploy to DigitalOcean” button for App Platform. You can now embed a button into your GitHub repo or website that allows users to deploy your app directly to DigitalOcean.
We have also released a jobs feature for App Platform. The job feature allows you to run application code at a scheduled time.
For more information, see the full release notes.