Composer und Bower über Docker ausführen 

published 18 April 2017
last modified at 09 September 2017

Composer und Bower via Docker so einrichten als wären sie nativ auf dem Mac installiert.

Ich brauche im Alltag sehr oft die Abhängigkeits-Management-Tools composer und bower. Zwar lassen sich diese auf dem Mac installieren, aber irgendwie ist es doch schöner nicht alles global in irgend einen bin ordner zu werfen.

Docker for Mac ist eine schöne Lösung für dieses Problem. Bis vor kurzem noch duch massive Performance-Probleme geplagt ist die Beta mit der :cached mount option inzwischen nutzbar. So kann man diese Befehle ausführen.

# für composer
docker run --rm -it -v "$(pwd):/app:cached" -w /app -v ~/.ssh:/root/.ssh -v /tmp:/tmp:cached composer
# für bower
docker run --rm -it -v "$(pwd):/app:cached" -w /app -v ~/.ssh:/root/.ssh digitallyseamless/nodejs-bower-grunt bower

Was mache ich genau?

Nun, dies auswendig jedes mal ein zu geben ist nicht ganz so leicht, daher hab ich mir diese Befehle als Alias in die ~/.bash_profile geschrieben.

alias composer='docker run --rm -it -v $(pwd):/app:cached -w /app -v ~/.ssh:/root/.ssh -v ~/.composer:/tmp/cached:cached composer'
alias bower='docker run --rm -it -v $(pwd):/app:cached -w /app -v ~/.ssh:/root/.ssh digitallyseamless/nodejs-bower-grunt bower'

So kann man nun composer und bower verwenden, als wären sie nativ installiert.

Linux nutzer müssten dies auch in die besser dafür geeignete ~/.bashrc schreiben können. Dort weiß ich allerdings nicht ob es nicht zu Rechteproblemen führen kann da der Befehl als root läuft und auch als 0 schreibt. Eventuell muss ich dann nochmal nachbessern.

Hier noch ein kleiner Bonus:

alias ponysay='docker run --interactive --rm mpepping/ponysay'