# Hugin-Server auf Red Hat UBI 9 minimal, für OpenShift (→ KONZEPT.md 18). # # docker build -t hugin server/ # docker run --rm -p 8080:8080 -e HUGIN_ADMIN_TOKEN=geheim hugin # Server # docker run --rm -e HUGIN_DATABASE_URL=… hugin migrate # Migrations-Job # # Läuft als beliebiger Benutzer der Gruppe 0 (OpenShift). Ohne HUGIN_DATABASE_URL liegt # die SQLite-Datenbank unter /data; dort ein Volume einhängen, sonst ist sie beim # Neustart weg. Mit PostgreSQL braucht der Container kein Volume. ARG UBI=registry.access.redhat.com/ubi9/ubi-minimal:9.7 # --- Bauen: Abhängigkeiten aus uv.lock in ein venv unter /opt/hugin FROM ${UBI} AS build RUN microdnf install -y --nodocs --setopt=install_weak_deps=0 python3.12 python3.12-pip \ && microdnf clean all RUN python3.12 -m pip install --no-cache-dir uv==0.11.25 ENV UV_PROJECT_ENVIRONMENT=/opt/hugin \ UV_PYTHON=/usr/bin/python3.12 \ UV_PYTHON_DOWNLOADS=never \ UV_COMPILE_BYTECODE=1 \ UV_LINK_MODE=copy \ UV_NO_CACHE=1 WORKDIR /src # Erst nur die Abhängigkeiten, damit diese Schicht bei Codeänderungen bleibt COPY pyproject.toml uv.lock ./ RUN uv sync --frozen --no-dev --no-install-project COPY src ./src RUN uv sync --frozen --no-dev --no-editable # --- Laufzeit: nur Python und das venv FROM ${UBI} RUN microdnf install -y --nodocs --setopt=install_weak_deps=0 python3.12 \ && microdnf clean all COPY --from=build /opt/hugin /opt/hugin RUN mkdir /data && chgrp 0 /data && chmod g=u /data ENV PATH=/opt/hugin/bin:$PATH \ PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ HUGIN_DATABASE_URL=sqlite:////data/hugin.db WORKDIR /data USER 1001 EXPOSE 8080 ENTRYPOINT ["hugin-server"] CMD ["run"]