Docker & Compose
IronFlock uygulamaları Docker imajları olarak paketlenir. Dockerfile, uygulama kodunuzun çalışma zamanı ortamını tanımlar.
Dockerfile
Her uygulama kök klasöründe bir Dockerfile gerektirir. Bu dosya, bir temel imajdan başlayarak uygulamanız için bir Linux ortamı yapılandırır:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]Tam sözdizimi başvurusu için resmi Dockerfile belgelerine bakın.
Çok Mimarili Destek
Farklı cihaz mimarilerini hedeflemek için mimariye özgü Dockerfile’lar ekleyin:
| Dosya | Mimari | Örnek Cihazlar |
|---|---|---|
Dockerfile | Varsayılan (geri dönüş olarak kullanılır) | Herhangi biri |
Dockerfile.armv7 | ARMv7 | Raspberry Pi 3/4 (32-bit) |
Dockerfile.arm64 | ARM64 | NVIDIA Jetson, RPi 4/5 (64-bit) |
Dockerfile.amd64 | AMD64 | Endüstriyel PC’ler, Intel NUC’lar |
Bir sürüm oluşturulurken IronFlock, her hedef mimari için en spesifik Dockerfile’ı seçer. Mimariye özgü dosya yoksa varsayılan Dockerfile kullanılır.
Docker Compose
Birden fazla servis içeren uygulamalar için (örneğin bir web sunucusu + veritabanı + işçi), Docker Compose kullanın:
# 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-stoppeddocker-compose.yml dosyasını kök klasöre Dockerfile’ın yerine (veya yanına) koyun. Kullanıcılar cihazlarında uygulamayı başlatıp durdurduğunda, tüm Compose yığını bir birim olarak yönetilir.
Docker Compose size şu konularda daha fazla kontrol sağlar:
- Volume bağlamaları ve veri kalıcılığı
- Servis ağı
- Kaynak sınırları
- Çok container mimarileri
En İyi Uygulamalar
- İmajları küçük tutun — Kısıtlı cihazlarda indirme sürelerini azaltmak için
-slimveya-alpinetemel imajları kullanın. - Sürümleri sabitleyin — Tekrarlanabilir derlemeler için
latestyerine belirli sürüm etiketleri (python:3.11-slim) kullanın. - Katmanları önbelleğe alın — Docker katman önbelleklemesinden yararlanmak için bağımlılık dosyalarını uygulama kodundan önce kopyalayın.
.dockerignorekullanın — Gereksiz dosyaları (belgeler, testler,.git) derleme bağlamından dışarıda bırakın.