Takeout é uma ferramenta CLI para criar pequenos contêineres Docker, um para cada uma das dependências do seu ambiente de desenvolvimento.
Ele foi feito para ser combinado com uma ferramenta como o Laravel Valet. Atualmente é compatível com macOS, Linux, Windows 10 e WSL2.
Com takeout enable mysql
você está executando o MySQL e nunca mais precisará se preocupar em gerenciar ou consertar o Homebrew MySQL.
Mas você também pode ativar facilmente ElasticSearch, PostgreSQL, MSSQL, Mongo, Redis e muito mais, com um comando simples. Para obter uma lista atual de serviços, consulte as classes disponíveis neste diretório: https://github.com/tighten/takeout/tree/main/app/Services
Instale o Takeout com o Composer executando:
composer global require " tightenco/takeout:~2.8 "
Certifique-se de que o diretório ~/.composer/vendor/bin
esteja no "PATH" do seu sistema.
Execute takeout
e, em seguida, um nome de comando de qualquer lugar do seu terminal.
Um dos principais benefícios do Takeout é que ele inicializa ("ativa") ou exclui ("desativa") contêineres Docker para suas diversas dependências de forma rápida e fácil.
Como o Docker oferece armazenamento de volume persistente, a exclusão de um contêiner (que chamamos de “desativação”) na verdade não exclui seus dados. Isso significa que você pode ativar e desativar serviços com abandono imprudente.
Mostre uma lista de todos os serviços que você pode ativar.
takeout enable
Passado o nome abreviado de um ou mais serviços, habilite-os.
takeout enable mysql
takeout enable redis meilisearch
Se você quiser pular a solicitação de cada parâmetro e apenas aceitar os padrões. Isso também funciona com vários serviços em um comando.
takeout enable mysql --default
takeout enable redis meilisearch --default
Você pode especificar argumentos extras para o contêiner após um separador --
:
takeout enable mysql -- -hsome.mysql.host -usome-user
Observe que esses são argumentos para o ponto de entrada do contêiner, e não opções extras de execução do docker (veja abaixo).
docker run
Nos bastidores, o comando takeout enable
gera um comando docker run
. Às vezes, você pode querer especificar opções extras para o comando docker run
, como uma variável de ambiente extra ou um mapeamento de volume extra. Você pode passar uma string com todas as opções extras docker run
usando a opção --run=
:
takeout enable mysql --run= " {docker-run-options} "
O que geraria o seguinte comando:
docker run {docker-run-options} {service-options} mysql/mysql-server
Onde {docker-run-options}
são as opções que você especifica dentro da opção --run
e {service-options}
são geradas com base nas opções padrão para esse serviço.
docker run
com argumentos de contêiner Você pode misturar e combinar as opções run
com os argumentos do contêiner:
takeout enable mysql --run= " {docker-run-options} " -- -hsome.mysql.host -usome-user
Mostre uma lista de todos os serviços habilitados que você pode desabilitar.
takeout disable
Passado o nome abreviado de um ou mais serviços, desative os serviços habilitados que mais se aproximam deles.
takeout disable mysql
takeout disable redis meilisearch
takeout disable --all
Mostre uma lista de todos os contêineres parados que você pode iniciar.
takeout start
Passado o ID do contêiner de um ou mais contêineres parados, inicie os contêineres parados que correspondem a eles.
takeout start {container_id}
takeout start {container_id1} {container_id2}
Você pode passar o sinalizador -all
para iniciar todos os contêineres habilitados.
takeout start --all
Mostre uma lista de todos os contêineres em execução que você pode interromper.
takeout stop
Passado o ID do contêiner de um ou mais contêineres em execução, interrompa os contêineres em execução que correspondem a eles.
takeout stop {container_id}
takeout stop {container_id1} {container_id2}
Outro benefício do Takeout é que ele permite que você tenha várias versões de uma dependência instaladas e em execução ao mesmo tempo. Isso significa, por exemplo, que você pode executar o MySQL 5.7 e 8.0 ao mesmo tempo, em portas diferentes.
Execute takeout enable mysql
duas vezes; na primeira vez, você desejará escolher a porta padrão ( 3306
) e a primeira versão ( 5.7
) e, na segunda vez, você desejará escolher uma segunda porta ( 3307
), a segunda versão ( 8.0
) e um nome de volume diferente (para que eles não compartilhem o mesmo mysql_data
).
Agora, se você executar takeout list
, verá os dois serviços em execução ao mesmo tempo.
+--------------+----------------+---------------+-----------------------------------+
| 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 |
+--------------+----------------+---------------+-----------------------------------+
Os contêineres para viagem são adicionados automaticamente a uma rede Docker chamada takeout
. Isso permite que você use o mesmo alias e alias de base usados para outros contêineres.
Cada contêiner recebe dois aliases nesta rede:
Outros contêineres na rede de takeout podem acessar os contêineres de takeout por meio de seus aliases. Verifique este artigo sobre como você pode usar vela e comida para viagem juntos
Infelizmente, não.
Primeiro, execute lsof -i :3306
(onde 3306 é a porta que não está disponível).
Se você vir uma saída como esta:
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)
A solução é apenas fechar a GUI do banco de dados e então ele deverá ser liberado.
Usar docker-compose
configura suas dependências projeto por projeto, o que é uma maneira perfeitamente boa de fazer as coisas. Se faz mais sentido para você ter uma única cópia de cada uma de suas dependências para todo o seu ambiente global, o Takeout faz mais sentido.
Não! Seus dados permanecerão por aqui! Por padrão, quase todos os nossos serviços usam um “volume” para anexar seus dados exatamente por esse motivo.
Então, quando você desabilita o serviço MySQL, por exemplo, esse volume – com todos os seus dados nele – ficará parado em silêncio. E quando você reativar, desde que você o conecte ao mesmo volume, todos os seus dados ainda estarão lá.
A melhor maneira de ver nossos planos futuros é conferir o Quadro de Projetos, mas aqui estão alguns planos para o futuro:
self-remove
: Exclui todos os serviços habilitados e talvez auto-desinstala?upgrade
: destrói o contêiner antigo, traz um novo com uma tag recém-especificada (solicita ao usuário, padrão latest
) e mantém todos os outros parâmetros (por exemplo, porta, volume) exatamente iguais ao antigopt/passthrough
: comandos proxy através do docker ( ./takeout pt mysql stop
)Se você está trabalhando conosco e foi designado para enviar um lançamento, este é o processo mais fácil:
main
( git checkout main && git pull
)php ./takeout app:build
)php ./builds/takeout list
)v1.5.1
)Publish release