Composer Kommandos via Docker direkt ausführen

Mit Docker ist es möglich, composer und andere Kommandozeilenwerkzeuge wie Drush, Gulp und viele weitere, direkt auszuführen. Im Folgenden beschreibe ich die Möglichkeit am Beispiel von Composer.

Ein neues Projekt kann mit Composer so angelegt werden:

docker run --rm --interactive --tty --user $(id -u):$(id -g) --volume $PWD:/app composer create-project ...

Das --rm sorgt dafür, dass der Container nach dem Ausführen des Kommandos direkt wieder entfernt wird.

Um beispielsweise ein neues Drupal 8 Projekt im aktuellen Verzeichnis anzulegen, sieht der Befehl wie folgt aus:

docker run --rm --interactive --tty --user $(id -u):$(id -g) --volume $PWD:/app composer create-project some-dir --stability dev --no-interaction

Und weil der docker run Befehl mit den Parametern ziemlich lang ist, kann dafür auch eine kleine Shell Funktion angelegt werden. Einfach die Funktion in die lokale .bashrc oder .zshrc eintragen:

composer () {
  tty=
  tty -s && tty=--tty
  docker run \
    $tty \
    --interactive \
    --rm \
    --user $(id -u):$(id -g) \
    --volume /etc/passwd:/etc/passwd:ro \
    --volume /etc/group:/etc/group:ro \
    --volume $(pwd):/app \
    composer "$@"
}

Danach kann direkt der composer Befehl auf der Kommandozeile verwendet werden. Ausgeführt wird dieser dann in einem Docker Container und man spart sich die Installation mit den Abhängigkeiten auf der lokalen Maschine.

Das ist besonders praktisch, wenn man öfter composer Kommandos lokal ausführen möchte.

Weitere Informationen zum Composer Docker Image: Docker Composer image