Files
ArchiveCostWebapp/logic/Dockerfile
T
huesser 1409e6cf0e In logic/Dockerfile wurde die Abhaengigkeit von einer speziellen Pythonversion entfernt. Die Zeile
-COPY --from=builder /var/tmp/python-packages /usr/lib/python3.11/site-packages

wurde erstetzt durch

COPY --from=builder /opt/python-packages /opt/python-packages

und danach wurde der PYTONPATH angepasst.
2026-06-26 09:33:26 +02:00

49 lines
1.7 KiB
Docker

# ==========================================
# STAGE 1: Der Builder (Hier wird kompiliert)
# ==========================================
FROM nodered/node-red:latest AS builder
USER root
# Compiler installieren, die Scout bemängelt
RUN apk add --no-cache python3 py3-pip python3-dev gcc g++ musl-dev libffi-dev
# Python-Pakete in einen separaten Ordner installieren
RUN pip3 install --no-cache-dir --break-system-packages --target=/opt/python-packages \
pandas \
numpy \
ldap3
# ================================================
# STAGE 2: Das finale, saubere Image
# gcc, ... wird nicht in das finale Image kopiert.
# ================================================
FROM nodered/node-red:latest
USER root
# NUR die Laufzeitumgebung installieren (KEIN gcc, KEIN g++, KEIN musl-dev!)
RUN apk add --no-cache python3 py3-pip tzdata
# Die fertig kompilierten Pakete aus Stage 1 an einen stabilen Ort kopieren
COPY --from=builder /opt/python-packages /opt/python-packages
# Den neuen Paket-Ordner zum PYTHONPATH hinzufügen
ENV PYTHONPATH="/opt/python-packages:${PYTHONPATH}"
# Zurück zum sicheren Standard-User von Node-RED
USER node-red
# Node-RED Module installieren
RUN npm install node-red-contrib-moment node-red-contrib-cron-plus
# Wechsel zu root, um das Entrypoint-Skript zu kopieren und die Rechte zu setzen
USER root
# Kopiere unser neues Entrypoint-Skript
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
# Setze unser Skript als den neuen Entrypoint
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
# Der ursprüngliche CMD des Node-RED-Images wird automatisch beibehalten und
# an unser Entrypoint-Skript als "$@" übergeben.