65 lines
3.0 KiB
Markdown
65 lines
3.0 KiB
Markdown
# Cloud Native Buildpacks (Experimental)
|
|
|
|
> New as of 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](/docs/deployment/methods/herokuish.md) 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](https://buildpacks.io) project to build apps. As the integration is experimental in Dokku, it is likely to change over time.
|
|
|
|
## Usage
|
|
|
|
To use this builder instead of either `Dockerfile` or `herokuish`, you must set the `DOKKU_CNB_EXPERIMENTAL` environment variable for your app to `1`.
|
|
|
|
```shell
|
|
dokku config:set --no-restart node-js-app DOKKU_CNB_EXPERIMENTAL=1
|
|
```
|
|
|
|
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](https://buildpacks.io/docs/tools/pack/).
|
|
|
|
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 as of 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.
|
|
|
|
```shell
|
|
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`.
|
|
|
|
```shell
|
|
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_STACK` environment variable (`heroku/buildpacks` by default).
|
|
|
|
```shell
|
|
# set globally
|
|
dokku buildpacks:set-property --global stack paketobuildpacks/build:base-cnb
|
|
|
|
# unset globally
|
|
dokku buildpacks:set-property --global stack
|
|
```
|