Last updated 05 February 2019
Table of Contents
These article describes the Heroku-16 stack, based on Ubuntu 16.04. What is a stack?
We recommend that you monitor memory consumption for a period after testing an app on Heroku-16, to ensure it’s performing correctly.
We’ve made the following changes from Cedar-14 to Heroku-16:
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.
Runtime versions and installed packages
When a new stack is released, old versions of a language runtime may no longer be supported. For the most accurate information on supported runtime versions, please check the individual language pages:
Learn more about the packages installed in Heroku-16.
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.
Heroku-16 Docker image
Heroku-16 is available as two Docker images:
- The runtime image 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.