Arrancar Thonny en Docker programar con MicroPython
Presentación
En el presente proyecto desarrollo la construcción y el uso de una imagen de docker para usar Thhony
Materiales
Puede ser cualquier placa que que se pueda conectar a un puerto serie y el correpondiente adaptador. En el presente desarrollo use la Esp8266
Placa Esp8266 Wifi
Modulo Adaptador Usb Esp-01s Programador Esp8266 Wifi
Si bien por ser mas cómodo y práctico se ha usado el adaptador el mismo puede ser remplazado por una placa FTDI y el cableado pertinente.
Construccion de la imagen docker
Para la construcción de la imagen debemos escribir el siguiente archivo Dockerfile
# Usar la imagen oficial de Python como base
FROM python:3.12-slim
# Definir el usuario y el grupo
ARG USER=operador
ARG UID=1000
ARG GID=1000
# Crear grupo y usuario sin privilegios
RUN groupadd --gid $GID $USER && \
useradd --uid $UID --gid $GID --create-home --shell /bin/bash $USER && \
usermod -aG dialout $USER # Agregar al grupo dialout
# Crear el directorio de trabajo y asignarle permisos
WORKDIR /app
RUN chown -R $USER:$USER /app
# Instalar dependencias
RUN apt-get update && apt-get install -y \
curl \
tk \
python3-tk \
xvfb \
&& pip install --no-cache-dir thonny \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Cambiar al usuario no root
USER $USER
# Definir el comando de inicio
CMD ["thonny"]
Observación El archivo Dockerfile esta actualizado a la versión 2 de la imagen para agregar un usuario no root .
A continuación debemos abrir una terminal en la carpeta donde se encuentran el archivo Dockerfile y construimos la imagen ejecutando el siguiente comando (cabe aclarar que debemos tener el Docker instalado y configurado).
docker build -t img_thonny .
Sobre la linea de comando anterior caben dos observaciones: el nombre de la imagen img_thonny puede ser ese o el que ustedes deseen, pero si lo cambian recuerden de modificar las instruciones que usaremos a continuacion. Y en segundo lugar no olvidarse del punto al final de la linea que debe ir siempre y separado con un espacio despues del nombre.
Si todo ha salido bien veremos lo siguiente en la terminal:
Puesta en marcha contenedor docker
Antes de iniciar el contenedor debemos habilitarlo a acceder al servidor gráfico X11 con siguiente comando: ( de tener otro servidor grafico aegurarse que el contenedor tenga acceso al mismo)
xhost +local:docker
A continuacion debemos iniciar el contenedor y lanzar el Thonny, lo que haremos ejecutando el siguiente comando:
docker run -it --name cont_thonny --device=/dev/ttyUSB0 \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
img_thonny
Aca tambien cabe considerar que el nombre colocado después de --name es el del contenedor y pueden modificarlo a su gusto, pero el del final img_flashesp8266 debe ser necesariamente igual al que le hayan dado a la imagen en el paso anterior
Ademas es imprescindible al momento de ejecutarse este comando que este conectada al puerto /dev/ttyUSB0 una placa (para el caso que la placa se conecte a otro puerto deberá modificarse la linea de comando)
Si todo ha salido bien veremos que se inicia el programa Thonny
Ahora solo resta configurarlo de la manera que ascostumbre a hacerlo y empezarlo a usar, despues de cerrar el Thonny las configuraciones asi como los archivos guardados se mantendran hasta el proximo arranque
En el siguiente video muestro como lo configuro yo para usarlo y se los dejo como ejemplo:
Detención y puesta en marcha del contenedor Docker
Es una buena práctica detener el contenedor que lo haremos con el siguiente comando teniendo siempre en cuenta que debemos nombrar el contenedor por el nombre que le asignamos al crearlo, en nuestro caso la sintaxis es:
docker stop cont_thonny
Cuando queramos volver a utilizarlo lo arrancaremos con el siguiente comando teniendo siempre en cuenta que debemos nombrar el contenedor por el nombre que le asignamos al crearlo y que la placa debe estar conectada al puerto /dev/ttyUSB0 o al que le hayamos asignado al poner en marcha el contenedor la primera vez, en nuestro caso la sintaxis es:
docker start cont_thonny