Takeout es una herramienta CLI para crear pequeños contenedores Docker, uno para cada una de las dependencias de su entorno de desarrollo.
Está destinado a combinarse con una herramienta como Laravel Valet. Actualmente es compatible con macOS, Linux, Windows 10 y WSL2.
Con takeout enable mysql
, está ejecutando MySQL y nunca más tendrá que preocuparse por administrar o reparar Homebrew MySQL.
Pero también puedes habilitar fácilmente ElasticSearch, PostgreSQL, MSSQL, Mongo, Redis y más, con un simple comando. Para obtener una lista actualizada de servicios, consulte las clases disponibles en este directorio: https://github.com/tighten/takeout/tree/main/app/Services
Instale Takeout con Composer ejecutando:
composer global require " tightenco/takeout:~2.8 "
Asegúrese de que el directorio ~/.composer/vendor/bin
esté en la "RUTA" de su sistema.
Ejecute takeout
y luego un nombre de comando desde cualquier lugar de su terminal.
Uno de los principales beneficios de Takeout es que inicia ("habilita") o elimina ("deshabilita") contenedores Docker para sus diversas dependencias de forma rápida y sencilla.
Debido a que Docker ofrece almacenamiento de volumen persistente, eliminar un contenedor (lo que llamamos "deshabilitarlo") en realidad no elimina sus datos. Eso significa que puede habilitar y deshabilitar servicios con abandono imprudente.
Muestra una lista de todos los servicios que puedes habilitar.
takeout enable
Pasó el nombre corto de uno o más servicios, habilítelos.
takeout enable mysql
takeout enable redis meilisearch
Si desea evitar que se le solicite cada parámetro y simplemente acepte los valores predeterminados. Esto también funciona con múltiples servicios en un solo comando.
takeout enable mysql --default
takeout enable redis meilisearch --default
Puede especificar argumentos adicionales para el contenedor después de --
separador:
takeout enable mysql -- -hsome.mysql.host -usome-user
Tenga en cuenta que estos son argumentos para el punto de entrada del contenedor, no opciones adicionales de ejecución de la ventana acoplable (ver más abajo).
docker run
Debajo del capó, el comando takeout enable
genera un comando docker run
. A veces es posible que desee especificar opciones adicionales para el comando docker run
como una variable de entorno adicional o una asignación de volumen adicional. Puede pasar una cadena con todas las opciones adicionales docker run
usando la opción --run=
:
takeout enable mysql --run= " {docker-run-options} "
Lo cual generaría el siguiente comando:
docker run {docker-run-options} {service-options} mysql/mysql-server
Donde {docker-run-options}
son las opciones que especifica dentro de la opción --run
y {service-options}
se generan en función de las opciones predeterminadas para ese servicio.
docker run
con argumentos de contenedor Puede mezclar y combinar las opciones run
con los argumentos del contenedor:
takeout enable mysql --run= " {docker-run-options} " -- -hsome.mysql.host -usome-user
Muestra una lista de todos los servicios habilitados que puedes desactivar.
takeout disable
Pasado el nombre corto de uno o más servicios, deshabilite los servicios habilitados que más se acerquen a ellos.
takeout disable mysql
takeout disable redis meilisearch
takeout disable --all
Muestra una lista de todos los contenedores detenidos que puedes iniciar.
takeout start
Pasado el ID de contenedor de uno o más contenedores detenidos, inicie los contenedores detenidos que coincidan con ellos.
takeout start {container_id}
takeout start {container_id1} {container_id2}
Puede pasar el indicador -all
para iniciar todos los contenedores habilitados.
takeout start --all
Muestra una lista de todos los contenedores en ejecución que puedes detener.
takeout stop
Se pasó el ID del contenedor de uno o más contenedores en ejecución, detenga los contenedores en ejecución que coincidan con ellos.
takeout stop {container_id}
takeout stop {container_id1} {container_id2}
Otro de los beneficios de Takeout es que te permite tener múltiples versiones de una dependencia instaladas y ejecutándose al mismo tiempo. Eso significa, por ejemplo, que puedes ejecutar MySQL 5.7 y 8.0 al mismo tiempo, en diferentes puertos.
Ejecute takeout enable mysql
dos veces; la primera vez, querrás elegir el puerto predeterminado ( 3306
) y la primera versión ( 5.7
), y la segunda vez, querrás elegir un segundo puerto ( 3307
), la segunda versión ( 8.0
) y un nombre de volumen diferente (para que no compartan el mismo mysql_data
).
Ahora, si ejecuta takeout list
, verá ambos servicios ejecutándose al mismo tiempo.
+--------------+----------------+---------------+-----------------------------------+
| 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 |
+--------------+----------------+---------------+-----------------------------------+
Los contenedores de comida para llevar se agregan automáticamente a una red Docker denominada takeout
. Esto le permite utilizar el mismo alias y el mismo alias base que se utiliza para los otros contenedores.
Cada contenedor recibe dos alias en esta red:
Otros contenedores de la red de comida para llevar pueden acceder a los contenedores de comida para llevar mediante sus alias. Consulta este artículo sobre cómo puedes utilizar la vela y la comida para llevar juntos.
Lamentablemente, no.
Primero, ejecute lsof -i :3306
(donde 3306 es el puerto que no está disponible).
Si ve un resultado como este:
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 solución es simplemente cerrar la GUI de su base de datos y luego debería publicarse.
El uso de docker-compose
configura sus dependencias proyecto por proyecto, lo cual es una forma perfecta de hacer las cosas. Si para usted tiene más sentido tener una única copia de cada una de sus dependencias para todo su entorno global, Takeout tiene más sentido.
¡No! ¡Tus datos se quedarán! De forma predeterminada, casi todos nuestros servicios utilizan un "volumen" para adjuntar sus datos exactamente por este motivo.
Entonces, cuando deshabilitas el servicio MySQL, por ejemplo, ese volumen, con todos tus datos en él, simplemente permanecerá ahí en silencio. Y cuando lo vuelvas a habilitar, siempre que lo conectes al mismo volumen, todos tus datos seguirán ahí.
La mejor manera de ver nuestros planes futuros es consultar el Panel de proyectos, pero aquí hay algunos planes para el futuro:
self-remove
: ¿elimina todos los servicios habilitados y luego tal vez se desinstala automáticamente?upgrade
: destruye el contenedor antiguo, genera uno nuevo con una etiqueta recién especificada (solicita al usuario que lo solicite, valor predeterminado latest
) y mantiene todos los demás parámetros (por ejemplo, puerto, volumen) exactamente igual que el anterior.pt/passthrough
: comandos proxy a través de la ventana acoplable ( ./takeout pt mysql stop
)Si está trabajando con nosotros y está asignado para impulsar un lanzamiento, este es el proceso más sencillo:
main
( git checkout main && git pull
).php ./takeout app:build
)php ./builds/takeout list
)v1.5.1
).Publish release