Composer und Bower über Docker ausführen

veröf­fent­licht am 18 April 2017
zuletzt bearbeitet am 09 September 2017

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

Ich brauche im Alltag sehr oft die Abhän­gig­keits-Ma­na­ge­ment-Tools composer und bower. Zwar lassen sich diese auf dem Mac instal­lie­ren, 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 Perfor­man­ce-Pro­bleme geplagt ist die Beta mit der :cached mount option inzwi­schen 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 verwen­den, als wären sie nativ installiert.

Linux nutzer müssten dies auch in die besser dafür geeig­nete ~/.bashrc schreiben können. Dort weiß ich aller­dings nicht ob es nicht zu Rechte­pro­blemen 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'