Takeout est un outil CLI permettant de créer de minuscules conteneurs Docker, un pour chacune des dépendances de votre environnement de développement.
Il est destiné à être associé à un outil comme Laravel Valet. Il est actuellement compatible avec macOS, Linux, Windows 10 et WSL2.
Avec takeout enable mysql
, vous utilisez MySQL et vous n'aurez plus jamais à vous soucier de la gestion ou de la réparation de Homebrew MySQL.
Mais vous pouvez également facilement activer ElasticSearch, PostgreSQL, MSSQL, Mongo, Redis et bien plus encore, avec une simple commande. Pour une liste actuelle des services, consultez les classes disponibles dans ce répertoire : https://github.com/tighten/takeout/tree/main/app/Services
Installez Takeout avec Composer en exécutant :
composer global require " tightenco/takeout:~2.8 "
Assurez-vous que le répertoire ~/.composer/vendor/bin
se trouve dans le « PATH » de votre système.
Exécutez takeout
, puis un nom de commande depuis n'importe où dans votre terminal.
L'un des principaux avantages de Takeout est qu'il démarre (« active ») ou supprime (« désactive ») les conteneurs Docker pour vos différentes dépendances rapidement et facilement.
Étant donné que Docker offre un stockage de volume persistant, la suppression d'un conteneur (que nous appelons « le désactiver ») ne supprime pas réellement ses données. Cela signifie que vous pouvez activer et désactiver des services avec un abandon imprudent.
Afficher une liste de tous les services que vous pouvez activer.
takeout enable
Passé le nom court d'un ou plusieurs services, activez-les.
takeout enable mysql
takeout enable redis meilisearch
Si vous souhaitez éviter d'être invité à indiquer chaque paramètre et accepter simplement les valeurs par défaut. Cela fonctionne également avec plusieurs services en une seule commande.
takeout enable mysql --default
takeout enable redis meilisearch --default
Vous pouvez spécifier des arguments supplémentaires au conteneur après un --
séparateur :
takeout enable mysql -- -hsome.mysql.host -usome-user
Notez qu'il s'agit d'arguments pour le conteneur Entrypoint, et non d'options d'exécution supplémentaires du Docker (voir ci-dessous).
docker run
Sous le capot, la commande takeout enable
génère une commande docker run
. Parfois, vous souhaiterez peut-être spécifier des options supplémentaires pour la commande docker run
telles qu'une variable d'environnement supplémentaire ou un mappage de volume supplémentaire. Vous pouvez transmettre une chaîne avec toutes les options docker run
à l'aide de l'option --run=
:
takeout enable mysql --run= " {docker-run-options} "
Ce qui générerait la commande suivante :
docker run {docker-run-options} {service-options} mysql/mysql-server
Où {docker-run-options}
sont les options que vous spécifiez dans l'option --run
et {service-options}
sont générées en fonction des options par défaut de ce service.
docker run
avec les arguments du conteneur Vous pouvez mélanger et faire correspondre les options run
avec les arguments du conteneur :
takeout enable mysql --run= " {docker-run-options} " -- -hsome.mysql.host -usome-user
Afficher une liste de tous les services activés que vous pouvez désactiver.
takeout disable
Passé le nom court d'un ou plusieurs services, désactivez les services activés qui leur correspondent le plus.
takeout disable mysql
takeout disable redis meilisearch
takeout disable --all
Afficher une liste de tous les conteneurs arrêtés que vous pouvez démarrer.
takeout start
Après avoir transmis l'ID d'un ou plusieurs conteneurs arrêtés, démarrez les conteneurs arrêtés qui leur correspondent.
takeout start {container_id}
takeout start {container_id1} {container_id2}
Vous pouvez transmettre l'indicateur -all
pour démarrer tous les conteneurs activés.
takeout start --all
Afficher une liste de tous les conteneurs en cours d'exécution que vous pouvez arrêter.
takeout stop
Après avoir transmis l'ID de conteneur d'un ou plusieurs conteneurs en cours d'exécution, arrêtez les conteneurs en cours d'exécution qui leur correspondent.
takeout stop {container_id}
takeout stop {container_id1} {container_id2}
Un autre avantage de Takeout est qu'il vous permet d'installer et d'exécuter plusieurs versions d'une dépendance en même temps. Cela signifie, par exemple, que vous pouvez exécuter MySQL 5.7 et 8.0 en même temps, sur des ports différents.
Exécutez takeout enable mysql
deux fois ; la première fois, vous souhaiterez choisir le port par défaut ( 3306
) et la première version ( 5.7
), et la deuxième fois, vous souhaiterez choisir un deuxième port ( 3307
), la deuxième version ( 8.0
) et un nom de volume différent (afin qu'ils ne partagent pas le même mysql_data
).
Désormais, si vous exécutez takeout list
, vous verrez les deux services s'exécuter en même temps.
+--------------+----------------+---------------+-----------------------------------+
| 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 |
+--------------+----------------+---------------+-----------------------------------+
Les conteneurs à emporter sont automatiquement ajoutés à un réseau Docker nommé takeout
. Cela vous permet d'utiliser le même alias et le même alias de base que ceux utilisés pour les autres conteneurs.
Chaque conteneur reçoit deux alias sur ce réseau :
Les autres conteneurs du réseau Takeout peuvent accéder aux conteneurs Takeout via leurs alias. Consultez cet article pour savoir comment utiliser la voile et les plats à emporter ensemble.
Malheureusement non.
Tout d'abord, exécutez lsof -i :3306
(où 3306 est le port indisponible.)
Si vous voyez une sortie comme celle-ci :
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)
La solution consiste simplement à fermer l’interface graphique de votre base de données, puis elle devrait être publiée.
L'utilisation docker-compose
configure vos dépendances projet par projet, ce qui est une très bonne façon de faire les choses. S'il vous semble plus logique d'avoir une seule copie de chacune de vos dépendances pour l'ensemble de votre environnement global, Takeout est plus logique.
Non! Vos données resteront ! Par défaut, presque tous nos services utilisent un « volume » auquel joindre vos données précisément pour cette raison.
Ainsi, lorsque vous désactivez le service MySQL, par exemple, ce volume (contenant toutes vos données) restera là, tranquillement. Et lorsque vous le réactiverez, tant que vous le connectez au même volume, toutes vos données seront toujours là.
La meilleure façon de voir nos projets futurs est de consulter le Tableau des projets, mais voici quelques projets pour l'avenir :
self-remove
: supprime tous les services activés, puis peut-être s'auto-désinstalle ?upgrade
: détruit l'ancien conteneur, en affiche un nouveau avec une balise nouvellement spécifiée (demande à l'utilisateur, par défaut latest
) et conserve tous les autres paramètres (par exemple, port, volume) exactement les mêmes que l'ancienpt/passthrough
: commandes proxy via docker ( ./takeout pt mysql stop
)Si vous travaillez avec nous et que vous êtes chargé de publier une version, voici le processus le plus simple :
main
( git checkout main && git pull
)php ./takeout app:build
)php ./builds/takeout list
)v1.5.1
)Publish release