Closed edmorley closed 4 months ago
Support for this was added as part of #1575.
For example:
python-getting-started $ docker build --tag arm-test --platform linux/arm64 .
python-getting-started $ docker run --rm -e PORT=5001 -p 5001:5001 arm-test
[2024-05-29 13:07:07 +0000] [1] [INFO] Starting gunicorn 22.0.0
[2024-05-29 13:07:07 +0000] [1] [INFO] Listening at: http://0.0.0.0:5001 (1)
[2024-05-29 13:07:07 +0000] [1] [INFO] Using worker: sync
[2024-05-29 13:07:07 +0000] [8] [INFO] Booting worker with pid: 8
[2024-05-29 13:07:10 +0000] [1] [INFO] Handling signal: winch
192.168.65.1 - - [29/May/2024:13:07:15 +0000] "GET / HTTP/1.1" 200 7437 "-" "curl/8.6.0"
Heroku itself currently runs on AMD64 CPUs, however, some users use our buildpacks locally on machines with ARM64 CPUs (such as M1/M2/M3 MacBooks) with the Heroku base images published to Docker Hub.
As such there have been requests to support the ARM64 architecture, e.g.: https://github.com/heroku/base-images/issues/194
Starting with Heroku-24, the base images published to Docker Hub are now multi-architecture (AMD64 + ARM64), and our preview Cloud Native Buildpacks support ARM64 when using Heroku-24.
However, until CNBs leave preview there will still be users using our classic buildpacks with our base images from Docker Hub, so it would be ideal if we could add ARM64 support to our classic buildpacks too. This will not only make the images faster to run locally, but also avoid breaking local development workflows if users update to Heroku-24 and miss the mention in the stack upgrade notes about using
--platform linux/amd64
to force the architecture back to AMD64.For example, the buildpack should support:
git clone https://github.com/heroku/python-getting-started && cd python-getting-started
Dockerfile
with the below contents.docker build --tag arm-test --platform linux/arm64 .
docker run --rm -e PORT=5001 -p 5001:5001 arm-test
curl localhost:5001