I tried to access from docker container, following docker files.
I used gpiozero (or libgpiod) because of can't use RPI.GPIO by modified GPIO access rule.
Despite what I did bind /dev/gpiomem0 , I got the error.
Traceback (most recent call last):
File "/app/led.py", line 4, in <module>
led = LED(25)
^^^^^^^
File "/usr/local/lib/python3.11/site-packages/gpiozero/devices.py", line 108, in __call__
self = super().__call__(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/gpiozero/output_devices.py", line 192, in __init__
super().__init__(pin, active_high=active_high,
File "/usr/local/lib/python3.11/site-packages/gpiozero/output_devices.py", line 74, in __init__
super().__init__(pin, pin_factory=pin_factory)
File "/usr/local/lib/python3.11/site-packages/gpiozero/mixins.py", line 75, in __init__
super().__init__(*args, **kwargs)
File "/usr/local/lib/python3.11/site-packages/gpiozero/devices.py", line 544, in __init__
super().__init__(pin_factory=pin_factory)
File "/usr/local/lib/python3.11/site-packages/gpiozero/devices.py", line 245, in __init__
Device.ensure_pin_factory()
File "/usr/local/lib/python3.11/site-packages/gpiozero/devices.py", line 270, in ensure_pin_factory
Device.pin_factory = Device._default_pin_factory()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/gpiozero/devices.py", line 317, in _default_pin_factory
return ep.load()()
^^^^^^^^^
File "/usr/local/lib/python3.11/importlib/metadata/__init__.py", line 202, in load
module = import_module(match.group('module'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/usr/local/lib/python3.11/site-packages/gpiozero/pins/rpigpio.py", line 10, in <module>
from RPi import GPIO
ModuleNotFoundError: No module named 'RPi'
- Dockerfile
FROM python:3.11-slim
RUN apt update -y && apt upgrade -y && apt install git vim -y
# GPIO
RUN pip install --break-system-packages gpiozero
- docker-compose.yml
services:
gpio:
build: .
stdin_open: true
tty: true
container_name: gpio
cap_add:
- SYS_RAWIO
privileged: true
devices:
- /dev/gpiomem
- /dev/gpiomem0
- /dev/gpiochip0
- /dev/gpiochip4
- /dev/gpio
command: bash
- sample.py
from time import sleep
from gpiozero import LED
led = LED(25)
while True:
led.on()
sleep(1)
led.off()
sleep(1)