Last updated 21 October 2020
Table of Contents
This article describes the Heroku-16 stack, based on Ubuntu 16.04. What is a stack?
- Heroku-16 is much smaller, with a Docker image of 465 MB (vs 1.35 GB for Cedar-14). By using the Heroku-16 Docker image for local development, you ensure dev/prod parity (i.e., the image running locally, is the same image running on Heroku).
- Improved support for compiling native Ruby and Python packages
- The JDK is installed by the Java/JVM buildpack. If you have an app that uses Java, but not the Java buildpack (e.g., jython or a Java Bridge), you’ll have to set the JVM buildpack on your app (instructions are listed below).
HEROKU_namespace is reserved for config vars set by the Heroku platform in order to offer functionality. If you have created
HEROKU_config vars, we suggest you change them when upgrading to Heroku-16, in order to avoid config var conflicts.
Every stack on Heroku supports different operating system packages and language runtime versions. This support is typically confined to software that was still actively developed by the respective maintainers at the time the stack was first released.
For the most accurate information on supported language runtime versions, please check the individual language pages:
Operating system packages
For a full list of operating system packages available on Heroku-16, please refer to article Ubuntu Packages on Heroku Stacks.
Heroku-16 is based on Ubuntu 16.04. It will be supported through April 2021. Learn more about Heroku’s stack update policy.
Testing and upgrading your app
Learn how to test and upgrade your app to Heroku-16.
We recommend that you monitor your application’s performance after migrating an app to the new stack to ensure it’s performing correctly.
Heroku-16 Docker image
Heroku-16 is available as two Docker images:
- The runtime image (
heroku/heroku:16) is recommended for most workloads;
- The build image (
heroku/heroku:16-build) is larger and includes development headers. It is only recommended for customers that need to compile source code.
Use the following command in your
Dockerfile to use Heroku-16 as your base image:
Learn more about deploying Docker images to Heroku.