Forum: PC-Programmierung run qmake aus dockerfile


von Johannes (Gast)


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?

von Εrnst B. (ernst)


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/

: Bearbeitet durch User
von Bobby X (Gast)


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.

von Bobby X (Gast)


Lesenswert?


von Sheeva P. (sheevaplug)


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/

von Sheeva P. (sheevaplug)


Lesenswert?

Bobby X schrieb:
> 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.

Ich habe seit langer Zeit nichts mehr so Dummes gelesen.

von Bobby X (Gast)


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...

von Rolf M. (rmagnus)


Lesenswert?

Bobby X schrieb:
> Nix ist dümmer als…

Doch, eine Sache gibt es, die dümmer ist: Ein Werkzeug für "eine der 
grössten Sch..., die es in der IT gibt" zu erklären, nur weil man es 
auch falsch verwenden kann.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.