Skip to Content
Sviluppo App IoTDocker & Compose

Docker & Compose

Le app IronFlock sono pacchettizzate come immagini Docker. Il Dockerfile definisce l’ambiente di esecuzione per il codice dell’applicazione.

Dockerfile

Ogni app richiede un Dockerfile nella cartella radice. Questo file configura un ambiente Linux per la tua app, partendo da un’immagine 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 documentazione ufficiale Dockerfile per il riferimento completo alla sintassi.

Supporto Multi-Architettura

Per supportare diverse architetture di dispositivi, aggiungi Dockerfile specifici per architettura:

FileArchitetturaDispositivi Esempio
DockerfileDefault (usato come fallback)Qualsiasi
Dockerfile.armv7ARMv7Raspberry Pi 3/4 (32-bit)
Dockerfile.arm64ARM64NVIDIA Jetson, RPi 4/5 (64-bit)
Dockerfile.amd64AMD64PC industriali, Intel NUC

Durante la build di una release, IronFlock seleziona il Dockerfile più specifico per ogni architettura target. Se non esiste un file specifico per architettura, viene usato il Dockerfile predefinito.

Docker Compose

Per le app con più servizi (es. un web server + un database + 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

Inserisci il docker-compose.yml nella cartella radice al posto di (o insieme a) un Dockerfile. Quando gli utenti avviano o fermano l’app sui loro dispositivi, l’intero stack Compose viene gestito come un’unità.

Docker Compose ti dà maggiore controllo su:

  • Mount di volumi e persistenza dei dati
  • Networking dei servizi
  • Limiti di risorse
  • Architetture multi-container

Best Practice

  • Mantieni le immagini piccole — Usa immagini base -slim o -alpine per ridurre i tempi di download sui dispositivi con risorse limitate.
  • Blocca le versioni — Usa tag di versione specifici (python:3.11-slim) invece di latest per build riproducibili.
  • Ottimizza i layer — Copia i file delle dipendenze prima del codice applicativo per sfruttare la cache dei layer Docker.
  • Usa .dockerignore — Escludi i file non necessari (doc, test, .git) dal contesto di build.
Last updated on