Einfache Entwicklungsabhängigkeitsverwaltung mit Podman und Tent
Von Farhan Hasin Chowdhury GitHub
Die Installation und Verwaltung von Entwicklungsabhängigkeiten für verschiedene Projekte ist eine lästige Aufgabe, und eine Sache, die Ihren täglichen Arbeitsablauf verbessern kann, ist die Verwendung von Containern.
Tent ist ein CLI-Tool zum Ausführen von Entwicklungsabhängigkeiten wie MySQL, Mongo, ElasticSearch usw. in vorkonfigurierten Containern mit einfachen Einzeilern.
Laufende Container können über ihre exponierten Ports erreicht und mit jeder anderen Anwendung auf Ihrem System gekoppelt werden.
Das Starten eines Services wie mysql ist so einfach wie die Ausführung von tent start mysql und Sie müssen nie wieder darauf zurückblicken.
Aber mysql ist nicht der einzige verfügbare Service. Eine Liste aller verfügbaren Services finden Sie unter: services.go
Tent ist stark von tighten/takeout inspiriert und ist ein experimentelles Projekt. Daher sollte Vorsicht geboten sein, wenn Sie es in einer kritischen Umgebung verwenden.
Abhängigkeiten
- Linux
- Podman installiert
- Podman System Service läuft
Wenn Sie Podman installiert haben, können Sie den System Service wie folgt starten:
## startet den podman system service
systemctl --user start podman.socket
## aktiviert den podman system service, damit er nicht bei jedem Neustart beendet wird
systemctl --user enable podman.socket
## stoppt den podman system service
systemctl --user stop podman.socket
## deaktiviert den podman system service, damit er nicht bei jedem Neustart startet
systemctl --user disable podman.socket
Tent geht davon aus, dass Sie den Service im Non-Root-Modus ausführen, daher ist das --user Argument in den obigen Befehlen notwendig.
Installation
Besuchen Sie die Tent Release-Seite und laden Sie die tent Binärdatei auf Ihren Computer herunter. Öffnen Sie Ihr Terminal dort, wo Sie die Datei heruntergeladen haben, und führen Sie folgende Befehle aus:
chmod +x ./tent
sudo mv ./tent /usr/local/bin
Jetzt sollte der tent Befehl überall in Ihrem System verfügbar sein.
Aus dem Quellcode erstellen
Wenn Sie auf einem Fedora-System sind, sollte der folgende Befehl die notwendigen Entwicklungsabhängigkeiten installieren.
sudo dnf groupinstall "Development Tools" -y && sudo dnf install golang btrfs-progs-devel gpgme-devel device-mapper-devel -y
Und auf einem Ubuntu-System sollte der folgende Befehl die notwendigen Entwicklungsabhängigkeiten installieren.
sudo apt install build-essential golang-go libbtrfs-dev libgpgme-dev libdevmapper-dev -y
Wenn Sie auf einem anderen System sind, können Sie nach äquivalenten Paketen in den jeweiligen Paket-Repositories suchen.
Erstellen und installieren Sie die Anwendung nun wie folgt:
git clone https://github.com/fhsinchy/tent.git ~/tent
cd ~/tent
make install
Verwendung
Die tent Binärdatei hat folgende Befehle:
tent start <service name>- startet einen Container für den angegebenen Servicetent stop <service name>- stoppt und entfernt einen Container für den angegebenen Servicetent list- listet alle laufenden Container auf
Die meisten Services in tent nutzen Volumes zum Persistieren von Daten, so dass selbst wenn Sie einen Service stoppen, seine Daten in einem Volume für die spätere Verwendung persistiert werden. Diese Volumes können durch die Ausführung von podman volume ls aufgelistet und wie jedes andere Podman-Volume verwaltet werden.
Einen Service starten
Die allgemeine Syntax für den start Befehl ist wie folgt:
tent start <service name>
## startet mysql und fragt Sie bei Bedarf nach
tent start mysql
## startet redis und mongo und fragt Sie bei Bedarf nach
tent start redis mongo
Service mit Standardkonfiguration starten
Das --default Flag für den start Befehl kann verwendet werden, um alle Eingabeaufforderungen zu überspringen und einen Service mit Standardkonfiguration zu starten
tent start <service name> --default
## startet mysql mit der Standardkonfiguration
tent start mysql --default
## startet redis und mongo mit Standardkonfiguration
tent start redis mongo --default
Einen Service stoppen
Die allgemeine Syntax für den stop Befehl ist wie folgt:
tent stop <service name>
## stoppt mysql und entfernt den Container
## fragt Sie, wenn mehrere Container gefunden werden
tent stop mysql
## stoppt alle mysql Container und entfernt sie
tent stop mysql --all
## stoppt redis und mongo und entfernt dann die Container.
## fragt Sie, wenn mehrere Container für einen der angegebenen Services gefunden werden.
tent stop redis mongo
## stoppt alle redis und mongo Container und entfernt sie dann
tent stop redis mongo --all
Alle Services stoppen
Das --all Flag für den stop Befehl kann verwendet werden, um alle laufenden Tent-Container auf einmal zu stoppen und zu entfernen
tent stop --all
Mehrere Versionen ausführen
Da alle Services in Containern laufen, können Sie mehrere Versionen desselben Services starten, solange Sie den Port unterschiedlich halten.
Führen Sie tent start mysql zweimal aus; das erste Mal verwenden Sie das --default Flag, und das zweite Mal geben Sie 5.7 als Tag und 3307 als Host-Port an.
Wenn Sie jetzt tent list ausführen, sehen Sie beide Services gleichzeitig laufen.
+--------------+----------------+---------------+---------------+
| CONTAINER | Image | PORTS |
+--------------+----------------+---------------+---------------+
| tent-mysql-5.7-3307 | docker.io/mysql:5.7 | 3307->3306/tcp |
| tent-mysql-latest-3306 | docker.io/mysql:5.7 | 3306->3306/tcp |
+--------------+----------------+---------------+---------------+
Container-Verwaltung
Von tent gestartete Container sind reguläre Container mit einigen voreingestellten Konfigurationen. Sie können also reguläre podman Befehle wie ls, inspect, logs usw. auf ihnen verwenden. Obwohl tent mit einem list Befehl kommt, führt die Verwendung der podman Befehle zu informativeren Ergebnissen. Das Ziel von tent ist es, Plug-and-Play-Container bereitzustellen, nicht eine vollwertige podman CLI zu werden.
Mitwirkung
Tent ist ein Open-Source-Projekt und Beiträge sind mehr als willkommen. Wenn Sie ein Go-Programmierer sind, nehmen Sie sich etwas Zeit, um den Quellcode durchzugehen, schauen Sie, ob Sie irgendeinen Teil des Programms verbessern können, der Maintainer wird mehr als glücklich sein, zu kooperieren. Und wenn Ihnen das Projekt gefällt, vergessen Sie nicht, einen Stern zu hinterlassen und es mit anderen Entwicklerkollegen zu teilen, um Ihre Wertschätzung zu zeigen.