Takeout — это инструмент CLI для запуска крошечных контейнеров Docker, по одному для каждой зависимости вашей среды разработки.
Он предназначен для использования с таким инструментом, как Laravel Valet. В настоящее время он совместим с macOS, Linux, Windows 10 и WSL2.
С takeout enable mysql
вы используете MySQL, и вам больше никогда не придется беспокоиться об управлении или исправлении Homebrew MySQL.
Но вы также можете легко включить ElasticSearch, PostgreSQL, MSSQL, Mongo, Redis и другие с помощью простой команды. Текущий список сервисов можно найти в классах, доступных в этом каталоге: https://github.com/tighten/takeout/tree/main/app/Services.
Установите Takeout с помощью Composer, выполнив:
composer global require " tightenco/takeout:~2.8 "
Убедитесь, что каталог ~/.composer/vendor/bin
находится в «PATH» вашей системы.
Запустите takeout
, а затем имя команды из любого места вашего терминала.
Одним из основных преимуществ Takeout является то, что он быстро и легко загружает («включает») или удаляет («отключает») контейнеры Docker для различных зависимостей.
Поскольку Docker предлагает постоянное хранилище томов, удаление контейнера (которое мы называем «отключением») фактически не приводит к удалению его данных. Это означает, что вы можете безрассудно включать и отключать службы.
Показать список всех служб, которые вы можете включить.
takeout enable
Передали короткое имя одной или нескольких служб, включите их.
takeout enable mysql
takeout enable redis meilisearch
Если вы хотите пропустить запрос каждого параметра и просто принять значения по умолчанию. Это также работает с несколькими службами в одной команде.
takeout enable mysql --default
takeout enable redis meilisearch --default
Вы можете указать дополнительные аргументы для контейнера после разделителя --
:
takeout enable mysql -- -hsome.mysql.host -usome-user
Обратите внимание, что это аргументы для точки входа контейнера, а не дополнительные параметры запуска Docker (см. ниже).
docker run
Под капотом команда takeout enable
генерирует команду docker run
. Иногда вам может потребоваться указать дополнительные параметры для команды docker run
например дополнительную переменную среды или дополнительное сопоставление томов. Вы можете передать строку со всеми дополнительными параметрами docker run
используя параметр --run=
:
takeout enable mysql --run= " {docker-run-options} "
Это сгенерирует следующую команду:
docker run {docker-run-options} {service-options} mysql/mysql-server
Где {docker-run-options}
— это параметры, которые вы указываете внутри параметра --run
, а {service-options}
генерируются на основе параметров по умолчанию для этой службы.
docker run
с аргументами контейнера Вы можете смешивать и сопоставлять параметры run
с аргументами контейнера:
takeout enable mysql --run= " {docker-run-options} " -- -hsome.mysql.host -usome-user
Показать список всех включенных служб, которые вы можете отключить.
takeout disable
Передав короткое имя одной или нескольких служб, отключите включенные службы, которые наиболее им соответствуют.
takeout disable mysql
takeout disable redis meilisearch
takeout disable --all
Показать список всех остановленных контейнеров, которые можно запустить.
takeout start
Передав идентификатор одного или нескольких остановленных контейнеров, запустите соответствующие им остановленные контейнеры.
takeout start {container_id}
takeout start {container_id1} {container_id2}
Вы можете передать флаг -all
, чтобы запустить все включенные контейнеры.
takeout start --all
Показать список всех запущенных контейнеров, которые можно остановить.
takeout stop
Передав идентификатор одного или нескольких работающих контейнеров, остановите соответствующие им работающие контейнеры.
takeout stop {container_id}
takeout stop {container_id1} {container_id2}
Еще одним преимуществом Takeout является то, что он позволяет одновременно устанавливать и запускать несколько версий зависимости. Это означает, например, что вы можете одновременно запускать MySQL 5.7 и 8.0 на разных портах.
Дважды запустите takeout enable mysql
; в первый раз вам нужно будет выбрать порт по умолчанию ( 3306
) и первую версию ( 5.7
), а во второй раз вам нужно будет выбрать второй порт ( 3307
), вторую версию ( 8.0
) и другое имя тома (чтобы они не использовали один и тот же mysql_data
).
Теперь, если вы запустите takeout list
, вы увидите, что обе службы работают одновременно.
+--------------+----------------+---------------+-----------------------------------+
| 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 автоматически добавляются в сеть Docker с именем takeout
. Это позволяет вам использовать те же псевдонимы и базовые псевдонимы, которые используются для других контейнеров.
Каждому контейнеру присваивается два псевдонима в этой сети:
Другие контейнеры в сети Архиватора могут получать доступ к контейнерам Архиватора по своим псевдонимам. Прочтите эту статью о том, как можно использовать парус и еду на вынос вместе.
К сожалению, нет.
Сначала запустите lsof -i :3306
(где 3306 — это недоступный порт).
Если вы видите такой вывод:
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)
Решение состоит в том, чтобы просто закрыть графический интерфейс вашей базы данных, а затем ее следует освободить.
Использование docker-compose
настраивает ваши зависимости для каждого проекта, что является прекрасным способом решения задач. Если для вас имеет больше смысла иметь одну копию каждой из ваших зависимостей для всей вашей глобальной среды, Takeout имеет больше смысла.
Неа! Ваши данные останутся навсегда! По умолчанию почти все наши службы используют «том» для прикрепления ваших данных именно по этой причине.
Итак, когда вы, например, отключите службу MySQL, этот том со всеми вашими данными будет просто тихо лежать там. И когда вы снова включите его, пока вы прикрепите его к тому же тому, все ваши данные все равно останутся там.
Лучший способ узнать наши планы на будущее — заглянуть на Совет проектов, но вот несколько планов на будущее:
self-remove
: удаляет все включенные службы, а затем, возможно, удаляет их самостоятельно?upgrade
: уничтожает старый контейнер, создает новый с новым указанным тегом (запрашивает его у пользователя, latest
по умолчанию) и сохраняет все остальные параметры (например, порт, объем) точно такими же, как старыйpt/passthrough
: команды прокси для докера ( ./takeout pt mysql stop
)Если вы работаете с нами и вам поручено продвигать релиз, вот самый простой процесс:
main
( git checkout main && git pull
)php ./takeout app:build
)php ./builds/takeout list
).v1.5.1
).Publish release