Attempting to install CircuitPython To Raspberry Pi 4: Seeking Dockerfile Help

Hello gurus,
I’ve had success getting Node.js working on various projects. Today, I hope to get CircuitPython installed and running for a GPIO project where most of the support/examples are centered around CircuitPython.

After looking at different examples, I’m getting stuck on the build. Any ideas of what I’m missing?:

Device: Raspberry Pi 4
Desired Python version: 3
Pip/pip3 could benefit from an upgrade

Here’s the current work-in-progress:

# Initial reference: https://github.com/balena-io-examples/balena-python-hello-world
FROM balenalib/%%BALENA_MACHINE_NAME%%-python:3-stretch-run

# Set our working directory
WORKDIR /usr/src/app

# Read: https://gallaugher.com/makersnack-installing-circuitpython-on-a-raspberry-pi/
# RUN install_packages python-smbus i2c-tools python3-pip
# TODO: Hmm. With this disabled, now I'm getting too many request errors. Will try again later?
# "toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit"
# Also, python3-pip may not be required here?

# upgrade pip
# TODO: This fails for now, attempting to run without (may not be required)
# RUN python -m pip install --upgrade pip

# Copy requirements.txt first for better cache on later pushes
COPY requirements.txt requirements.txt

# pip install python deps from requirements.txt on the resin.io build server
RUN pip install -r requirements.txt

# This will copy all files in our root to the working  directory in the container
COPY . ./

# Enable udevd so that plugged dynamic hardware devices show up in our container.
ENV UDEV=1

# main.py will run when container starts up on the device
CMD ["python","-u","src/main.py"]

requirements.txt if needed:

RPI.GPIO
adafruit-blinka

From this I’ve been experiencing two errors. My latest has been a toomanyrequests error. Maybe I’m building too often as I figure this out?

Previously (commented out) I was failing in upgrading pip. Maybe there’s a different command for that in build?

Thanks for taking a look in advance! My familiarity with Python in general is limited, yet I look forward to giving it a shot on a Pi for GPIO purposes.

Hello Christopher

what is the error message that you are getting? how are you getting stuck?

Hello Juan,

Currently as-is above:

“toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: Understanding Your Docker Hub Rate Limit | Docker

This kills the build.

Hi there,

Ok then, this is not a problem in your Dockerfile, but it is due to docker hub rate limiting: https://docs.docker.com/docker-hub/download-rate-limit/
It seems like the Balena Docker Hub account has reached some limit (it shouldn’t have). We’re looking into this. As a workaround, if you have a Docker Hub account, you should be able to use your own credentials: https://www.balena.io/docs/learn/deploy/deployment/#private-base-images
If not stay tuned, we are working on it

you can follow the satus of this incident here:

regards,

Juan

Thank you! I’ll follow up once this resolved with solution or further questions if that’s cool. Have a great day!

Hey Christopher,
you can try again now, it should be fixed. And if you have more questions about the build, come back to us!
have fun!
Juan

Thank you Juan! I’m all set.