How to Troubleshoot Your App in App Platform

Review build and runtime logs

View the logs for your application to see if any exceptions or errors were thrown.

Consult the Error Reference

Check any errors that show up in your logs against the error reference for further explanation.

Review Any Limits or Usage Details for Your Programming Language

Look up the details for your programming language by browsing to the Languages and Frameworks page and look for any details under the headings Usage and Limits.

Check the “Insights” for Your App for Spikes

Insights are graphical charts showing your resource use. If your CPU, memory, or bandwidth usage is unexpectedly high, you could be experiencing unintended side-effects and low performance. Navigate to your app in the control panel and click the Insights tab to investigate.

See the Results of Your Last Health Check

Health checks should be configured for any publicly-accessible service that is running as part of your app. If a health check is failing, that means that external traffic is not reaching your service at the expected HTTP route.

Redeploy

A redeploy of your app can help get you past the rare case where there was a transient issue with App Platform itself, and force a check on GitHub for the latest code commit that may contain your fix.

Inspect your App Spec

The app spec can show you the complete topology of your app in one manifest, which may reveal problems. To download the App Spec for your app, go to the Settings tab for your app, and click the View link.

Console in to Your Component

You can use the App Platform console to give you the shell for your app's container. From here you can execute any bash commands that you think might help investigate the issue.

Ensure Access to Your Database

Use the connection details in the cloud control panel with database software such as MySQL Workbench, to verify that your database is live and connectable. If it seems to be running, check the following:

  • Are your connection parameters defined correctly? If you add a managed database as a component of your app then App Platform will automatically create a DATABASE_URL environment variable for you that contains the connection string.
  • Are your database's connections unrestricted? App Platform cannot connect to a database that has restricted connections or trusted sources configured, even if that database is managed by DigitalOcean.

If you're still having trouble, the supported engines for DigitalOcean databases have “Troubleshooting Connectivity” guides like this one for MySQL that are good to consult.

Echo Debug Information

Anything that you print to the STDOUT stream in your code will be captured in the logs for your app, which can give you a crucial picture into the state of your app at the time of failure. This is true for both build-time output and run-time output.

Review Github Permissions

Configure your GitHub permissions so that DigitalOcean is installed on your account, and grant DigitalOcean Repository access for the repos that contain the source code you'd like to ship, leaving all other settings on default.

Check for a Misconfigured Port or Network Interface

App Platform expects that any service you deploy will listen on all interfaces on port 8080 (0.0.0.0:8080). If you cannot modify your service's code to listen on port 8080, you can change the HTTP Port setting during the initial app creation process or on the component details page of your service. If you're configuring your application using the app spec, you can use the http_port key to configure App Platform to expect your service on a different port.

For convenience, App Platform will set an environment variable named PORT in your runtime environment that contains the expected port number for your service to listen on.

If the Build Was Skipped, Consult Earlier Logs

Sometimes when viewing the details of a deployment you will see the message “The build was skipped for this deployment” and no build logs will appear. This happens when App Platform was able to save time by re-using the results of a previous build (i.e. when nothing about your app's containers underwent a significant change).

To see the current build logs for this application, look back in your app's Deployment History until you find the most recent Deployment with non-empty build logs.

Review These Limits

  • 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. 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 cannot be routed through your own Cloudflare account and must instead use App Platform's built-in CDN functionality.

  • 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.

The console is an in-browser command-line terminal. Its shell context is a running container instance for a given component.
A health check is a scheduled HTTP or TCP request that you can configure to run on a repeating basis to ensure that a service is healthy.
View application insights in App Platform
View application, build, and deploy logs in App Platform
The Insights Dashboard in App Platform helps you monitor the resource usage for your app.
Logs are captures of the standard output stream that you can inspect for information about activity related to your app.
Reference for the format of app configuration files for App Platform, also known as “app specs.”