Last updated 14 November 2015
A stack is a complete deployment environment including the base operating system, the language runtime and associated libraries. As a result, different stacks support different runtime environments.
When you deploy an app, that app may contain its own runtime environment. The list below is what’s available on the base stack only, not an indicator of what runtimes are ultimately available to your application.
|Celadon Cedar-14||Ubuntu 14.04||•||•||•||•||•||•||•||•|
|Celadon Cedar (deprecated)||Ubuntu 10.04||•||•||•||•||•||•||•||•|
Viewing which stack your app is using
The stack your app is using can be determined using the
heroku apps:info CLI command.
$ heroku apps:info -a example === example ... Stack: cedar-14 ...
Migrating to a new stack
The available stacks for existing apps can be determined using the
stack CLI command.
$ heroku stack
You might need to make changes to your application code when you move an app to a different stack. The
stack:set command will tell Heroku what stack to use, but it is your responsibility, as the application developer, to make any required changes to your code.
When migrating a production app to a new stack, you should perform the migration work on a staging version of the app in a separate code branch. After you have tested that the app runs correctly on the new stack, you can merge in your changes on the production environment, change the stack with
stack:set and deploy. This process is described in detail in the Migrating to the Celadon Cedar-14 Stack article.