Takeout ist ein CLI-Tool zum Hochfahren winziger Docker-Container, einen für jede Ihrer Entwicklungsumgebungsabhängigkeiten.
Es soll mit einem Tool wie Laravel Valet kombiniert werden. Es ist derzeit mit macOS, Linux, Windows 10 und WSL2 kompatibel.
Mit takeout enable mysql
führen Sie MySQL aus und müssen sich nie wieder um die Verwaltung oder Reparatur von Homebrew MySQL kümmern.
Sie können aber auch ganz einfach ElasticSearch, PostgreSQL, MSSQL, Mongo, Redis und mehr mit einem einfachen Befehl aktivieren. Eine aktuelle Liste der Dienste finden Sie in den in diesem Verzeichnis verfügbaren Klassen: https://github.com/tighten/takeout/tree/main/app/Services
Installieren Sie Takeout mit Composer, indem Sie Folgendes ausführen:
composer global require " tightenco/takeout:~2.8 "
Stellen Sie sicher, dass sich das Verzeichnis ~/.composer/vendor/bin
im „PATH“ Ihres Systems befindet.
Führen Sie takeout
und dann einen Befehlsnamen an einer beliebigen Stelle in Ihrem Terminal aus.
Einer der Hauptvorteile von Takeout besteht darin, dass es Docker-Container für Ihre verschiedenen Abhängigkeiten schnell und einfach startet („aktiviert“) oder löscht („deaktiviert“).
Da Docker persistenten Volume-Speicher bietet, werden durch das Löschen eines Containers (wir nennen ihn „Deaktivieren“) nicht tatsächlich seine Daten gelöscht. Das bedeutet, dass Sie Dienste problemlos aktivieren und deaktivieren können.
Zeigt eine Liste aller Dienste an, die Sie aktivieren können.
takeout enable
Übergeben Sie den Kurznamen eines oder mehrerer Dienste und aktivieren Sie diese.
takeout enable mysql
takeout enable redis meilisearch
Wenn Sie die Abfrage der einzelnen Parameter überspringen und einfach die Standardeinstellungen akzeptieren möchten. Dies funktioniert auch mit mehreren Diensten in einem Befehl.
takeout enable mysql --default
takeout enable redis meilisearch --default
Sie können nach einem --
zusätzliche Argumente für den Container angeben:
takeout enable mysql -- -hsome.mysql.host -usome-user
Beachten Sie, dass es sich dabei um Argumente für den Container-Einstiegspunkt und nicht um zusätzliche Docker-Ausführungsoptionen handelt (siehe unten).
docker run
Optionen Unter der Haube generiert der takeout enable
-Befehl einen docker run
-Befehl. Manchmal möchten Sie möglicherweise zusätzliche Optionen für den docker run
-Befehl angeben, z. B. eine zusätzliche Umgebungsvariable oder eine zusätzliche Volume-Zuordnung. Mit der Option --run=
können Sie eine Zeichenfolge mit allen zusätzlichen docker run
Ausführungsoptionen übergeben:
takeout enable mysql --run= " {docker-run-options} "
Was den folgenden Befehl generieren würde:
docker run {docker-run-options} {service-options} mysql/mysql-server
Dabei sind {docker-run-options}
die Optionen, die Sie in der Option --run
angeben, und {service-options}
werden basierend auf den Standardoptionen für diesen Dienst generiert.
docker run
Optionen mit Containerargumenten Sie können die run
mit den Containerargumenten kombinieren und anpassen:
takeout enable mysql --run= " {docker-run-options} " -- -hsome.mysql.host -usome-user
Zeigt eine Liste aller aktivierten Dienste an, die Sie deaktivieren können.
takeout disable
Wenn Sie den Kurznamen eines oder mehrerer Dienste übergeben haben, deaktivieren Sie die aktivierten Dienste, die ihnen am ehesten entsprechen.
takeout disable mysql
takeout disable redis meilisearch
takeout disable --all
Zeigt eine Liste aller gestoppten Container an, die Sie starten können.
takeout start
Übergeben Sie die Container-ID eines oder mehrerer gestoppter Container und starten Sie die gestoppten Container, die ihnen entsprechen.
takeout start {container_id}
takeout start {container_id1} {container_id2}
Sie können das Flag -all
übergeben, um alle aktivierten Container zu starten.
takeout start --all
Zeigt eine Liste aller laufenden Container an, die Sie stoppen können.
takeout stop
Die Container-ID eines oder mehrerer ausgeführter Container wurde übergeben. Stoppen Sie die entsprechenden ausgeführten Container.
takeout stop {container_id}
takeout stop {container_id1} {container_id2}
Ein weiterer Vorteil von Takeout besteht darin, dass Sie mehrere Versionen einer Abhängigkeit gleichzeitig installieren und ausführen können. Das bedeutet zum Beispiel, dass Sie MySQL 5.7 und 8.0 gleichzeitig auf verschiedenen Ports ausführen können.
Führen Sie takeout enable mysql
zweimal aus; Beim ersten Mal möchten Sie den Standardport ( 3306
) und die erste Version ( 5.7
) auswählen, und beim zweiten Mal möchten Sie einen zweiten Port ( 3307
), die zweite Version ( 8.0
) und a auswählen unterschiedliche Volume-Namen (damit sie nicht dieselben mysql_data
verwenden).
Wenn Sie nun takeout list
ausführen, werden beide Dienste gleichzeitig ausgeführt.
+--------------+----------------+---------------+-----------------------------------+
| CONTAINER ID | NAMES | STATUS | PORTS |
+--------------+----------------+---------------+-----------------------------------+
| 4bf3379ab2f5 | TO--mysql--5.7 | Up 2 seconds | 33060/tcp, 0.0.0.0:3306- > 3306/tcp |
| 983acf46ceef | TO--mysql--8.0 | Up 35 seconds | 33060/tcp, 0.0.0.0:3307- > 3306/tcp |
+--------------+----------------+---------------+-----------------------------------+
Takeout-Container werden automatisch einem Docker-Netzwerk namens takeout
hinzugefügt. Dadurch können Sie dasselbe Aliasing und Basis-Aliasing verwenden, das auch für die anderen Container verwendet wird.
Jeder Container erhält in diesem Netzwerk zwei Aliase:
Andere Container im Takeout-Netzwerk können über ihre Aliase auf Takeout-Container zugreifen. In diesem Artikel erfahren Sie, wie Sie Sail und Takeout zusammen nutzen können
Leider nein.
Führen Sie zunächst lsof -i :3306
aus (wobei 3306 der Port ist, der nicht verfügbar ist).
Wenn Sie eine Ausgabe wie diese sehen:
com.docke 936 mattstauffer 52u IPv6 0xc0d6f0b06d5c4efb 0t0 TCP localhost:mysql->localhost:62919 (FIN_WAIT_2)
TablePlus 96155 mattstauffer 16u IPv4 0xc0d6f0b0b6dccf6b 0t0 TCP localhost:62919->localhost:mysql (CLOSE_WAIT)
Die Lösung besteht darin, einfach Ihre Datenbank-GUI zu schließen und sie dann freizugeben.
Durch die Verwendung docker-compose
werden Ihre Abhängigkeiten projektweise eingerichtet, was eine vollkommen gute Möglichkeit ist, Dinge zu erledigen. Wenn es für Sie sinnvoller ist, eine einzelne Kopie jeder Ihrer Abhängigkeiten für Ihre gesamte globale Umgebung zu haben, ist Takeout sinnvoller.
Nein! Ihre Daten bleiben erhalten! Aus genau diesem Grund verwenden fast alle unsere Dienste standardmäßig ein „Volume“, an das Ihre Daten angehängt werden.
Wenn Sie also beispielsweise den MySQL-Dienst deaktivieren, bleibt dieses Volume – mit all Ihren Daten darin – einfach still stehen. Und wenn Sie es erneut aktivieren, sind alle Ihre Daten immer noch dort, solange Sie es an dasselbe Volume anschließen.
Der beste Weg, unsere Zukunftspläne zu sehen, ist ein Blick auf das Projects Board, aber hier sind ein paar Pläne für die Zukunft:
self-remove
: Löscht alle aktivierten Dienste und deinstalliert sich dann möglicherweise selbst?upgrade
: Zerstört den alten Container, ruft einen neuen mit einem neu angegebenen Tag auf (Benutzer dazu auffordern, Standard „ latest
) und behält alle anderen Parameter (z. B. Port, Volume) genau wie beim alten beipt/passthrough
: Proxy-Befehle bis zum Docker ( ./takeout pt mysql stop
)Wenn Sie mit uns zusammenarbeiten und den Auftrag haben, eine Veröffentlichung voranzutreiben, ist hier der einfachste Prozess:
main
herunter ( git checkout main && git pull
).php ./takeout app:build
)php ./builds/takeout list
)v1.5.1
).Publish release