Skip to main content

Buildpack Stacks

A buildpack stack defines the set of buildpacks used to build your application. Deploio supports two stacks: heroku (the default) and paketo.

Heroku Stack (Default)

The heroku stack is the default and uses exclusively unchanged Heroku Cloud Native Buildpacks. This ensures strict compatibility with standard Heroku CNB behavior and provides frequently updated runtime versions.

Paketo Stack

The paketo stack uses a combination of Paketo buildpacks, nine-managed buildpacks, and Heroku Cloud Native Buildpacks for some languages. This stack includes custom buildpacks that provide automatic language detection, including for static sites.

Static Sites on the Heroku Stack

Automatic language detection for static sites is not available on the heroku stack, because that detection is handled by a nine-managed buildpack. When deploying a static site with the heroku stack using nctl, you must explicitly set the language:

nctl create application my-static-site \
--buildpack-stack=heroku \
--language=static \
--git-url=https://github.com/your-org/your-repo

Choosing a Stack

The heroku stack is a good default for most applications. Consider switching to the paketo stack if:

  • You need automatic language detection for static sites, which is provided by a nine-managed buildpack not available in the heroku stack.
  • You need the specific features provided by Paketo buildpacks.

Configuring the Buildpack Stack

Use the --buildpack-stack flag when creating or updating an application:

# Create an application using the paketo stack
nctl create application my-app \
--buildpack-stack=paketo \
--git-url=https://github.com/your-org/your-repo

# Switch an existing application to the paketo stack
nctl update application my-app --buildpack-stack=paketo

# Switch back to the default heroku stack
nctl update application my-app --buildpack-stack=heroku