Skip to Content
IoT-App-EntwicklungDocker & Compose

Docker & Compose

IronFlock-Apps werden als Docker-Images verpackt. Das Dockerfile definiert die Laufzeitumgebung für Ihren Anwendungscode.

Dockerfile

Jede App benötigt ein Dockerfile im Stammverzeichnis. Diese Datei konfiguriert eine Linux-Umgebung für Ihre App, ausgehend von einem Basis-Image:

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

Die vollständige Syntaxreferenz finden Sie in der offiziellen Dockerfile-Dokumentation.

Multi-Architektur-Unterstützung

Um verschiedene Gerätearchitekturen zu unterstützen, fügen Sie architekturspezifische Dockerfiles hinzu:

DateiArchitekturBeispielgeräte
DockerfileStandard (wird als Fallback verwendet)Alle
Dockerfile.armv7ARMv7Raspberry Pi 3/4 (32-Bit)
Dockerfile.arm64ARM64NVIDIA Jetson, RPi 4/5 (64-Bit)
Dockerfile.amd64AMD64Industrie-PCs, Intel NUCs

Beim Erstellen eines Releases wählt IronFlock das spezifischste Dockerfile für jede Zielarchitektur aus. Wenn keine architekturspezifische Datei vorhanden ist, wird das Standard-Dockerfile verwendet.

Docker Compose

Für Apps mit mehreren Diensten (z. B. ein Webserver + eine Datenbank + ein Worker) verwenden Sie 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

Platzieren Sie die docker-compose.yml im Stammverzeichnis anstelle von (oder zusätzlich zu) einem Dockerfile. Wenn Benutzer die App auf ihren Geräten starten oder stoppen, wird der gesamte Compose-Stack als Einheit verwaltet.

Docker Compose gibt Ihnen mehr Kontrolle über:

  • Volume-Mounts und Datenpersistenz
  • Service-Netzwerke
  • Ressourcenlimits
  • Multi-Container-Architekturen

Best Practices

  • Images klein halten — Verwenden Sie -slim- oder -alpine-Basis-Images, um Downloadzeiten auf eingeschränkten Geräten zu reduzieren.
  • Versionen festlegen — Verwenden Sie spezifische Versions-Tags (python:3.11-slim) statt latest für reproduzierbare Builds.
  • Layer-Caching nutzen — Kopieren Sie Abhängigkeitsdateien vor dem Anwendungscode, um das Docker-Layer-Caching zu nutzen.
  • .dockerignore verwenden — Schließen Sie unnötige Dateien (Dokumentation, Tests, .git) aus dem Build-Kontext aus.
Last updated on