49 lines
1.6 KiB
Docker
49 lines
1.6 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"
|
|
|
|
# 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. |