41daacd56c
Tab "Images" um Verwaltungsfunktionen erweitert: - Einzel-Pull: Image aus anderer Registry (z. B. Docker Hub) per skopeo in die eigene Registry kopieren, optional mit Benutzername/Kennwort oder Access Token fuer private Quell-Registries - Bulk-Pull: alle image-Eintraege einer docker-compose (Textfeld oder Datei-Upload) auf einmal holen; Variablen/eigene Registry werden ignoriert - Digest-Dedup: bereits mit gleichem Digest vorhandene Images werden uebersprungen (kopiert mit --all, damit Multi-Arch-Digests matchen) - Loeschen: Muelltonne hinter jedem Tag mit Rueckfrage - Garbage Collection: gibt belegten Speicher frei, laeuft per registry-Binary (Multi-Stage-Build) direkt auf dem gemounteten Speicher, kein Docker-Socket gunicorn: 1 Worker (gemeinsames Service-Passwort) + 8 Threads, Timeout 1800s fuer lange Kopiervorgaenge. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
25 lines
788 B
Docker
25 lines
788 B
Docker
# Die registry-Binary aus dem offiziellen Image uebernehmen (fuer Garbage Collection)
|
|
FROM registry:2 AS registry
|
|
|
|
FROM python:3.12-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# skopeo wird benoetigt, um Images aus anderen Registries zu kopieren
|
|
RUN apk add --no-cache skopeo
|
|
# registry-Binary fuer "registry garbage-collect"
|
|
COPY --from=registry /bin/registry /usr/local/bin/registry
|
|
|
|
COPY requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
COPY . .
|
|
|
|
EXPOSE 5000
|
|
|
|
# 1 Worker (gemeinsames Service-Passwort) + mehrere Threads fuer parallele
|
|
# Anfragen, waehrend ein skopeo-Kopiervorgang laeuft.
|
|
# Langes Timeout, da das Kopieren grosser Images mehrere Minuten dauern kann.
|
|
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--workers", "1", "--threads", "8", \
|
|
"--timeout", "1800", "app:app"]
|