Skip to content

Cloud Native Buildpacks (Experimental)

New

Introduced in 0.22.0

buildpacks:set-property [--global|<app>] <key> <value>  # Set or clear a buildpacks property for an app

Cloud Native Buildpacks are an evolution over the Buildpacks technology provided by the Herokuish builder. See the herokuish buildpacks documentation for more information on how to clear buildpack build cache for an application.

Warning

This functionality uses the pack cli from the Cloud Native Buildpacks project to build apps. As the integration is experimental in Dokku, it is likely to change over time.

Usage

Detection

This builder will be auto-detected in either the following cases:

  • The DOKKU_CNB_EXPERIMENTAL app environment variable is set to 1.
    dokku config:set --no-restart node-js-app DOKKU_CNB_EXPERIMENTAL=1
    
  • A .project.toml file exists in the root of the app repository.
  • This file is consumed by pack-cli and used to describe how the app is built.

The builder can also be specified via the builder:set command:

dokku builder:set node-js-app selected pack

Info

Dokku will only select the dockerfile builder if both the herokuish and pack builders are not detected and a Dockerfile exists. See the dockerfile builder documentation for more information on how that builder functions.

Requirements

The pack cli tool is not included by default with Dokku or as a dependency. It must also be installed as shown on this page.

Builds will proceed with the pack cli for the app from then on.

Caveats

As this functionality is highly experimental, there are a number of caveats. Please note that not all issuesare listed below.

  • Specifying specific buildpacks is not currently possible.
  • A future release will add support for specifying buildpacks via the buildpacks plugin.
  • There is currently no way to specify extra arguments for pack cli invocations.
  • A future release will add support for injecting extra arguments during the build process.
  • The default process type is web.
  • Build cache is stored in Docker volumes instead of on disk. As such, repo:purge-cache currently has no effect.
  • A future version will add integration with the repo plugin.
  • pack is not currently included with Dokku, nor is it added as a package dependency.
  • A future version will include it as a package dependency.

Customizing the Buildpack stack builder

New

Introduced in 0.23.0

The default stack builder in use by CNB buildpacks in Dokku is based on heroku/buildpacks. Users may desire to switch the stack builder to a custom version, either to update the operating system or to customize packages included with the stack builder. This can be performed via the buildpacks:set-property command.

dokku buildpacks:set-property node-js-app stack paketobuildpacks/build:base-cnb

The specified stack builder can also be unset by omitting the name of the stack builder when calling buildpacks:set-property.

dokku buildpacks:set-property node-js-app stack

A change in the stack builder value will execute the post-stack-set trigger.

Finally, stack builders can be set or unset globally as a fallback. This will take precedence over a globally set DOKKU_CNB_BUILDER environment variable (heroku/buildpacks by default).

# set globally
dokku buildpacks:set-property --global stack paketobuildpacks/build:base-cnb

# unset globally
dokku buildpacks:set-property --global stack