Skip to Content
Tworzenie aplikacji IoTKonfiguracja Docker

Docker i Compose

Aplikacje IronFlock są pakowane jako obrazy Docker. Dockerfile definiuje środowisko uruchomieniowe dla kodu twojej aplikacji.

Dockerfile

Każda aplikacja wymaga Dockerfile w folderze głównym. Ten plik konfiguruje środowisko Linux dla twojej aplikacji, zaczynając od obrazu bazowego:

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

Zapoznaj się z oficjalną dokumentacją Dockerfile po pełną dokumentację składni.

Obsługa wielu architektur

Aby kierować do różnych architektur urządzeń, dodaj pliki Dockerfile specyficzne dla architektury:

PlikArchitekturaPrzykładowe urządzenia
DockerfileDomyślny (używany jako fallback)Dowolny
Dockerfile.armv7ARMv7Raspberry Pi 3/4 (32-bit)
Dockerfile.arm64ARM64NVIDIA Jetson, RPi 4/5 (64-bit)
Dockerfile.amd64AMD64Komputery przemysłowe, Intel NUC

Podczas budowania wydania IronFlock wybiera najbardziej specyficzny Dockerfile dla każdej docelowej architektury. Jeśli nie istnieje plik specyficzny dla architektury, używany jest domyślny Dockerfile.

Docker Compose

Dla aplikacji z wieloma usługami (np. serwer webowy + baza danych + worker), użyj 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

Umieść docker-compose.yml w folderze głównym zamiast (lub obok) Dockerfile. Gdy użytkownicy uruchamiają lub zatrzymują aplikację na swoich urządzeniach, cały stos Compose jest zarządzany jako jednostka.

Docker Compose daje ci większą kontrolę nad:

  • Montowaniem wolumenów i trwałością danych
  • Siecią usług
  • Limitami zasobów
  • Architekturami wielokontenerowymi

Najlepsze praktyki

  • Utrzymuj małe obrazy — Używaj bazowych obrazów -slim lub -alpine, aby zmniejszyć czas pobierania na urządzeniach z ograniczonymi zasobami.
  • Przypinaj wersje — Używaj konkretnych tagów wersji (python:3.11-slim) zamiast latest dla odtwarzalnych buildów.
  • Cachuj warstwy — Kopiuj pliki zależności przed kodem aplikacji, aby korzystać z cachowania warstw Docker.
  • Używaj .dockerignore — Wyklucz niepotrzebne pliki (dokumentację, testy, .git) z kontekstu budowania.
Last updated on