Skip to Content
Desarrollo de apps IoTDocker y Compose

Docker y Compose

Las aplicaciones de IronFlock se empaquetan como imágenes Docker. El Dockerfile define el entorno de ejecución para tu código de aplicación.

Dockerfile

Cada aplicación requiere un Dockerfile en la carpeta raíz. Este archivo configura un entorno Linux para tu aplicación, partiendo de una imagen base:

FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "main.py"]

Consulta la documentación oficial de Dockerfile para la referencia completa de sintaxis.

Soporte multi-arquitectura

Para apuntar a diferentes arquitecturas de dispositivos, agrega Dockerfiles específicos por arquitectura:

ArchivoArquitecturaDispositivos de ejemplo
DockerfilePor defecto (usado como respaldo)Cualquiera
Dockerfile.armv7ARMv7Raspberry Pi 3/4 (32 bits)
Dockerfile.arm64ARM64NVIDIA Jetson, RPi 4/5 (64 bits)
Dockerfile.amd64AMD64PCs industriales, Intel NUCs

Al crear un release, IronFlock selecciona el Dockerfile más específico para cada arquitectura de destino. Si no existe un archivo específico para la arquitectura, se usa el Dockerfile por defecto.

Docker Compose

Para aplicaciones con múltiples servicios (por ejemplo, un servidor web + una base de datos + un worker), usa Docker Compose:

# docker-compose.yml version: "3" services: app: build: . volumes: - /data:/data - /shared:/shared ports: - "5000:5000" restart: unless-stopped redis: image: redis:7-alpine restart: unless-stopped

Coloca el docker-compose.yml en la carpeta raíz en lugar de (o junto a) un Dockerfile. Cuando los usuarios inician o detienen la aplicación en sus dispositivos, todo el stack de Compose se gestiona como una unidad.

Docker Compose te da más control sobre:

  • Montaje de volúmenes y persistencia de datos
  • Redes entre servicios
  • Límites de recursos
  • Arquitecturas multi-contenedor

Buenas prácticas

  • Mantén las imágenes pequeñas — Usa imágenes base -slim o -alpine para reducir los tiempos de descarga en dispositivos con recursos limitados.
  • Fija las versiones — Usa etiquetas de versión específicas (python:3.11-slim) en lugar de latest para builds reproducibles.
  • Aprovecha la caché de capas — Copia los archivos de dependencias antes del código de la aplicación para aprovechar la caché de capas de Docker.
  • Usa .dockerignore — Excluye archivos innecesarios (documentación, tests, .git) del contexto de build.
Last updated on