run qmake aus dockerfile

Gast #6420549
Lesenswert?

Hallo,

ich versuche gerade ein Dockerimage zu erstellen. Das funktioniert aber 
leider doch nicht so wie gedacht.

Das Problem ist, dass qmake nicht gefunden werden kann.
wenn ich
qmake  /usr/projects/test/test.pro
aus dem Terminal aufrufe wird eine Makefile erstellt.
aber aus der Dockerfile
RUN qmake /usr/projects/test/test.pro
oder
RUN /usr/share/Qt5.6.2/5.6/bin/qmake /usr/projects/test/test.pro

bekomme ich die Meldung, dass qmake nicht gefunden wurde.

Wenn ich das Dockerfile ausführe, kann ich dann auf lokale sachen 
zugreifen ( wie z.B. qmake) oder muss das erst noch mit apt-get install 
installiert werden?
#6420630
Lesenswert?

Johannes schrieb:
> Wenn ich das Dockerfile ausführe, kann ich dann auf lokale sachen
> zugreifen ( wie z.B. qmake) oder muss das erst noch mit apt-get install
> installiert werden?

Sinn vom Dockerfile ist es, das Kompilieren/Builden unabhängig vom 
Hosts-System zu machen, damit es überall reproduzierbar ist.

Also "nein" und "ja".

Da bietet sich dann ein Mehrstufiges Docker-File an, damit der letztlich 
erstellte Container nicht die ganzen Build-Dependencies mitschleppen 
muss.

https://docs.docker.com/develop/develop-images/multistage-build/
Gast #6422691
Lesenswert?

Docker ist eine der grössten Sch..., die es in der IT gibt! Wenn die 
Entwickler nicht in der Lage sind Runtime- und Abwärtskompatibilität der 
Libs,  Abhängigkeiten usw.... im Griff zu haben, dann sollen sie zurück 
auf die Schulbank! Docker ist nur ein Workaround für die Faulheit.
#6426326
Lesenswert?

Johannes schrieb:
> ich versuche gerade ein Dockerimage zu erstellen. Das funktioniert aber
> leider doch nicht so wie gedacht.
>
> Das Problem ist, dass qmake nicht gefunden werden kann.
> wenn ich
> qmake  /usr/projects/test/test.pro
> aus dem Terminal aufrufe wird eine Makefile erstellt.
> aber aus der Dockerfile
> RUN qmake /usr/projects/test/test.pro
> oder
> RUN /usr/share/Qt5.6.2/5.6/bin/qmake /usr/projects/test/test.pro
>
> bekomme ich die Meldung, dass qmake nicht gefunden wurde.
>
> Wenn ich das Dockerfile ausführe, kann ich dann auf lokale sachen
> zugreifen ( wie z.B. qmake) oder muss das erst noch mit apt-get install
> installiert werden?

Ja, natürlich. Dein Base-Image (FROM) ist ein minimales Linux, wobei die 
einzelnen Distributoren unter "minimal" etwas unterschiedliche Dinge 
verstehen. Das siehst Du schon an den verschiedenen Größen einiger 
solcher Base-Images: ubuntu:20.04 ist zum 73 Megabyte groß, 
debian:latest 114 MB, und alpine:latest nur knapp 6 MB. Wie dem auch 
sei: alles, was nicht in diesem Base-Image enthalten ist, muß natürlich 
mit den bekannten Mechanismen (apt, yum, dnf, apk, ...) installiert 
werden. Auf etwas lokal installiertes kannst Du im Build-Prozeß nicht 
zugreifen, weil der Build seinerseits in eigenen Containern läuft, die 
automatisch dynamisch generiert und nach einem fehlerfreien Build auch 
automatisch wieder weggeworfen werden.

Tipp am Rande: da Du anscheinend ein QT-Projekt übersetzen möchtest, 
möchte ich Dir wärmstens empfehlen, Dir mal Dockers "Multi Stage Builds" 
[1] anzuschauen, um Deine Images klein zu halten und Deinem Kunden 
außerdem nicht womöglich gleich auch den Quellcode zu Deiner Software 
mit dem Image zu liefern. ;-)

[1] https://docs.docker.com/develop/develop-images/multistage-build/
Gast #6427776
Lesenswert?

Sheeva P. schrieb:

> Ich habe seit langer Zeit nichts mehr so Dummes gelesen.

Nix ist dümmer als für jede noch so kleine Anwendung mehrere Hundert MB 
große Images zu erstellen, konfigurieren und deployen. Meistens ohne zu 
verstehen was man genau macht, was genau passiert usw... usf...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren