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:
| Plik | Architektura | Przykładowe urządzenia |
|---|---|---|
Dockerfile | Domyślny (używany jako fallback) | Dowolny |
Dockerfile.armv7 | ARMv7 | Raspberry Pi 3/4 (32-bit) |
Dockerfile.arm64 | ARM64 | NVIDIA Jetson, RPi 4/5 (64-bit) |
Dockerfile.amd64 | AMD64 | Komputery 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-stoppedUmieść 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
-slimlub-alpine, aby zmniejszyć czas pobierania na urządzeniach z ograniczonymi zasobami. - Przypinaj wersje — Używaj konkretnych tagów wersji (
python:3.11-slim) zamiastlatestdla 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.