Dockerfile: brew installieren klappt nicht, Pfad nicht gefunden

n/a

Ensign
Registriert
Feb. 2025
Beiträge
170
Bash:
#some lines before

RUN adduser --disabled-password --gecos "" myuser
RUN passwd -d myuser
RUN echo "root:no" | chpasswd
RUN echo "myuser ALL=(ALL:ALL) NOPASSWD: ALL" | tee /etc/sudoers.d/myuser

USER myuser
WORKDIR /home/myuser/Downloads
RUN NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
RUN echo >> /home/myuser/.bashrc
RUN echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/myuser/.bashrc
RUN eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
RUN /home/linuxbrew/.linuxbrew/bin/brew install yt-dlp

#some lines after

Zeile 11 bis 13 klappt scheinbar nicht. Wenn ich den Container starte und eine Konsole öffne, steht der Befehl "brew" (und "yt-dlp") nicht zur Verfügung, und ich muss Zeile 11 bis 13 des Dockerfile noch einmal manuell ausführen. Woran könnte es liegen, dass der Pfad nicht erkannt wird, bzw. Zeile 11 bis 13 initial scheitert?

BTW: "/home/myuser/" mounte ich als Volume in den Container, der Ordner steht also auf dem Host und im Container zur Verfügung.
Ergänzung ()

AAAAAAAAAAAAAAAAAAAAaaaa, ich hab den Fehler gefunden, "/home/myuser/" wird ja erst gemountet, wenn der Container startet, noch nicht, wenn er gebaut wird... Das heißt im Klartext, die Änderung in "/home/myuser/.bashrc" hat einfach keinen Effekt danach - und wird durch den Mount wieder verworfen. Right?

Deshalb gebe ich in Zeile 14 auch den vollen Pfad an.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Krik
Also, die Lösung war, Zeile 10 bis 14 sollten nur im CMD-Script stehen, nicht in den RUN.
 
Zurück
Oben