Zum Komponieren von Diensten, die über das Netzwerk über Ports verfügbar gemacht werden (-p 5000:5000
) bietet Docker alle Arten von Hilfe (z. B. docker-compose).
Was ich suche ist eine Möglichkeit, bestimmte binäre Anwendungen als Service in einem Docker-Container bereitzustellen. Beispiele wären:Was ist der beste Weg, um Kommandozeilen-Anwendungen in einer Docker-Umgebung zu verwenden?
- Compiler (zB gcc)
- Generatoren (zB für Protokollpuffer)
- ...
einen einzigen Befehl ausführen zu
meine aktuelle Ansatz ist habe ein kleines Shell-Skript, das Parameter übergibt und kümmert sich um das Mapping des aktuellen Verzeichnisses:
runbox(){
current_dir=${PWD##*/}
docker run --rm -it \
-v ${PWD}:/home/dev/${current_dir} \
-w /home/dev/${current_dir} \
box:latest \
/bin/bash -c "[email protected]"
}
mit es sieht wie folgt aus:
runbox "g++ --version"
im Vergleich zu lokal ausgeführt:
g++ --version
mehrere Befehle Komponieren
Lassen Sie uns jetzt sagen, ich habe n einen solchen Dienst, wie kann ich komponieren sie in einer Weise, dass alle von ihnen in einem anderen Container (z. B. verwendet werden können) läuft auf einem Ci)?
Services running
in Docker containers
+---------------------+
| | +---------+
| CI Docker Container +-----> | gcc |
| | +---------+
| |
| make +-----> +---------+
| | | protoc |
| | +---------+
+----------------+----+
| +---------+
+----------> | clang |
+---------+
was den Overhead von sehr oft einen Befehl aufrufen?