45 lines
1.7 KiB
Docker
45 lines
1.7 KiB
Docker
# 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"]
|