Takeout is a CLI tool for spinning up tiny Docker containers, one for each of your development environment dependencies.

Overview

Takeout - Docker-based dependency management

Takeout

Run tests Lint Latest Version on Packagist Downloads on Packagist

Takeout is a CLI tool for spinning up tiny Docker containers, one for each of your development environment dependencies.

It's meant to be paired with a tool like Laravel Valet. It's currently compatible with macOS, Linux, Windows 10 and WSL2.

With takeout enable mysql you're running MySQL, and never have to worry about managing or fixing Homebrew MySQL again.

But you can also easily enable ElasticSearch, PostgreSQL, MSSQL, Mongo, Redis, and more, with a simple command. For a current list of services, look at the classes available in this directory: https://github.com/tighten/takeout/tree/main/app/Services

Requirements

Installation

Install Takeout with Composer by running:

composer global require tightenco/takeout

Make sure the ~/.composer/vendor/bin directory is in your system's "PATH".

Usage

Run takeout and then a command name from anywhere in your terminal.

One of Takeout's primary benefits is that it boots ("enables") or deletes ("disables") Docker containers for your various dependencies quickly and easily.

Because Docker offers persistent volume storage, deleting a container (which we call "disabling" it) doesn't actually delete its data. That means you can enable and disable services with reckless abandon.

Enable a service

Show a list of all services you can enable.

takeout enable

Enable specific services

Passed the short name of one or more services, enable them.

takeout enable mysql

takeout enable redis meilisearch

Enable services with default parameters

If you want to skip over being asked for each parameter and just accept the defaults. This also works with multiple services in one command.

takeout enable mysql --default

takeout enable redis meilisearch --default

Disable a service

Show a list of all enabled services you can disable.

takeout disable

Disable specific services

Passed the short name of one or more services, disable the enabled services that match them most closely.

takeout disable mysql

takeout disable redis meilisearch

Disable all services

takeout disable --all

Start a stopped container

Show a list of all stopped containers you can start.

takeout start

Start specific stopped containers

Passed the container ID of one or more stopped containers, start the stopped containers that matches them.

takeout start {container_id}

takeout start {container_id1} {container_id2}

Start all containers

You may pass the -all flag to start all enabled containers.

takeout start --all

Stop a running container

Show a list of all running containers you can stop.

takeout stop

Stop specific running containers

Passed the container ID of one or more running containers, stop the running containers that matches them.

takeout stop {container_id}

takeout stop {container_id1} {container_id2}

Running multiple versions of a dependency

Another of Takeout's benefits is that it allows you to have multiple versions of a dependency installed and running at the same time. That means, for example, that you can run both MySQL 5.7 and 8.0 at the same time, on different ports.

Run takeout enable mysql twice; the first time, you'll want to choose the default port (3306) and the first version (5.7), and the second time, you'll want to choose a second port (3307), the second version (8.0) and a different volume name (so that they don't share the same mysql_data).

Now, if you run takeout list, you'll see both services running at the same time.

+--------------+----------------+---------------+-----------------------------------+
| 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 |
+--------------+----------------+---------------+-----------------------------------+

FAQs

Will this enable the PHP drivers for me via PECL?

Sadly, no.

If I disable a service but Takeout still shows the port as taken, how do I proceed?

First, run lsof -i :3306 (where 3306 is the port that's unavailable.)

If you see output like this:

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)

The solution is to just close your database GUI, and then it should be released.

Why would you use this instead of `docker-compose`?

Using docker-compose sets up your dependencies on a project-by-project basis, which is a perfectly fine way to do things. If it makes more sense to you to have a single copy of each of your dependencies for your entire global environment, Takeout makes more sense.

Will disabling a service permanently delete my databases?

Nope! Your data will stick around! By default almost all of our services use a "volume" to attach your data to for exactly this reason.

So, when you disable the MySQL service, for example, that volume--with all your data in it--will just sit there quietly. And when you re-enable, as long as you attach it to the same volume, all your data will still be there.

Future plans

The best way to see our future plans is to check out the Projects Board, but here are a few plans for the future:

  • Electron-based GUI
  • self-remove command: Deletes all enabled services and then maybe self-uninstalls?
  • upgrade: destroys the old container, brings up a new one with a newly-specified tag (prompt user for it, default latest) and keeps all other parameters (e.g. port, volume) exactly the same as the old one
  • pt/passthrough: proxy commands through to docker (./takeout pt mysql stop)
  • Deliver package in a way that's friendly to non-PHP developers (Homebrew? NPM?)
  • Allow other people to extend Takeout by adding their own plugins (thanks to @angrybrad for the idea!)

Process for release

If you're working with us and are assigned to push a release, here's the easiest process:

  1. Visit the Takeout Releases page; figure out what your next tag will be (increase the third number if it's a patch or fix; increase the second number if it's adding features)

  2. On your local machine, pull down the latest version of main (git checkout main && git pull)

  3. Build for the version you're targeting (php ./takeout app:build)

  4. Run the build once to make sure it works (php ./builds/takeout list)

  5. Commit your build and push it up

  6. Draft a new release with both the tag version and release title of your tag (e.g. v1.5.1)

  7. Set the body to be a bullet-point list with simple descriptions for each of the PRs merged, as well as the PR link in parentheses at the end. For example:

    - Fix internal Memcached port (#92)

  8. Hit Publish release

  9. Profit

Issues
  • Specify an optional nickname when enabling a service

    Specify an optional nickname when enabling a service

    This PR is based on the discussion happening in #77

    The Problem

    When creating multiple service containers of the same version you will run into naming conflicts.

    ex:

     ERR  docker: Error response from daemon: Conflict. The container name "/TO--mariadb--focal" is already in use by container "1605cd2ae8729609ec3e62e43268e92ec2891c27f9d7ae9fcf2bb8c302c39718". You have to remove (or rename) that container to be able to reuse that name.
    See 'docker run --help'.
    

    The Solution

    Prompt the user for a nickname (defaults to a uniqid()) that we add to the container name to ensure uniqueness

    Considerations

    • No tests yet
    • I chose the word nickname based on the discussion in the issue
    • We could do a retry prompt similar to the one for choosing a port if there is a name conflict
    • I chose to use a unique string instead of the volume name as a fallback, but we could easily add that in

    Happy to hear feedback 😄

    opened by ozziexsh 17
  • Update port warnings to better handle some edge cases

    Update port warnings to better handle some edge cases

    Problem

    Currently, if the connected database client is left open and a container is disabled, then the port is "read' as being in use.

    Suggested Solution

    Changing from netstat to lsof, we can filter the results of port usage to only those being used by docker.

    New expectation

    This should allow the port usage warning to be more accurate during takeout enable.

    opened by josecanhelp 14
  • Group the services list by categories

    Group the services list by categories

    Issue:

    Takeout currently sorts the services list by alphabetical order. As more and more services will be added to the list, it might become a bit confusing to browse.

    Suggestion:

    Each service could have a category property, which could be used to at least group similar services.

    Examples of categories:

    • database
    • storage
    • search
    • cache
    • mail

    Improvement:

    Thetakeout enable command could now have two steps instead of one:

    • Select a category of services
    • Choose the relevant service in the curated list
    opened by AlexMartinFR 12
  • Add menu support for native Windows

    Add menu support for native Windows

    References #146

    I made a comment in the issue referenced above that gives a fairly detailed outline of changes made. Please review that and my code and let me know what you would like for me to adjust. I am sure there are probably better ways to code some of the array items. Also, I extracted some code into private method where I thought it made sense. Hopefully it readable.

    I have manually tested all of the menus in native Windows 10. I also manually tested the default menu system from the WSL prompt just to be sure my refactoring didn't break anything.

    I was reviewing the tests and noticed the default menu UI is not currently tested. I think I could probably write a OS specific test to test the Windows menu. Let me know if you want that to be included in this PR or just make a that a new PR.

    Thanks!

    opened by delta1186 12
  • Connection refused trying to connect to registry-1.docker.io

    Connection refused trying to connect to registry-1.docker.io

    I know I'm a Takeout maintainer so I don't have to make this public, but I figure I'm not the only person who'll ever see this error, so I'll put it here publicly while I try to figure it out.

    image

     ERR  Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.64.1:53: read udp 192.168.64.2:36267->192.168.64.1:53: read: connection refused
    

    This is on an m1 laptop using the brand new Docker for desktop build, so first thing I'm going to do is install a Docker container the classic way not using takeout and I bet I'll have the same issue there. :)

    opened by mattstauffer 12
  • change in `takeout start`? can't start multiple items from the menu

    change in `takeout start`? can't start multiple items from the menu

    i'm pretty sure in the past i would run takeout start and be able to start several containers. i would choose one, it would disappear from the list, choose another one, etc..., until i choose exit. now the menu quits right after my first choice. i've checked the docs to see if something has changed but even there's some new features, there's nothing that should have affected this. am i getting old? :D

    opened by godbout 11
  • Using --default option

    Using --default option

    I have worked out on using --default on any enable command to use default ports and tags or keys

    can be useful if you create many services at once as per your project setup #130

    I have edited the Environment.php to check ports availability on Linux and WSL And I have edited the container name, so that it will not conflict when creating 2 docker container with same version but with different ports

    opened by khanalpride 9
  • Allow enabling services with non-standard docker images

    Allow enabling services with non-standard docker images

    As described in #236 you sometimes want to use non-standard docker images because they have some plugins bundled you may want to use. Especially for PostgreSQL there are a lot of plugins not available in core, the most common is the PostGIS extension.

    Instead of simply specifying a simple docker tag in the dialog you can now easily change the base by typing e.g. postgis/postgis:latest. This will also solve the pull request for TimescaleDB as TimescaleDB is just a PostgreSQL extension.

    opened by tpetry 9
  • pass options to enable container without having to go through cli prompt

    pass options to enable container without having to go through cli prompt

    just some thoughts. i'm coming from laradock and i was looking for something lighter. takeout seems to be a great option, but from my tests and what i can get from the code, we have to go through the prompts. that makes it hard to automatize.

    to give you an idea of my workflow, i run one command through itermocil, and it opens a bunch of terminal panels, goes into the right directories, boot up docker containers with the right options, run npm run watch in them, etc... basically i call one command, i wait for 20 seconds, and my project is up with the right version of PHP, mysql, redis, etc, etc. that would be pretty nice to be able to do this with takeout. any thought?

    opened by godbout 9
  • Add Soketi service

    Add Soketi service

    Closes #267

    opened by willvincent 0
  • Feature Request - Websocket service(s)

    Feature Request - Websocket service(s)

    There are two opensource websocket solutions that provider Pusher compatible websocket servers available, and mentioned in the official Laravel docs.

    Laravel-Websockets is installable as a standard Laravel package, so not relevant here. However, soketi was also recently added, and is available as a docker image, so probably makes sense to include.

    opened by willvincent 0
  • Docker image difference between mysql/mysql-server and mysql

    Docker image difference between mysql/mysql-server and mysql

    Hi, I've just recently upgraded my takeout instance to v.1.8.12 and noticed that the MySQL service changed from using mysql to mysql/mysql-server because my volume that was create from the mysql won't work with the mysql/mysql-server. Because of this I'm forced to stick with v1.8.11. And as per searching the two are indeed different.

    Maybe we can separate the two? Like retain the mysql as MySQL and the new mysql/mysql-server as MySQL Oracle Maintained?

    opened by delfzzz 0
  • Set Minio domain to allow dns buckets

    Set Minio domain to allow dns buckets

    Closes #264.

    However, it would probably be preferable for the domain default to be null and then to not include MINIO_DOMAIN in the run template at all, it wasn't immediately clear to me how that would best be accomplished, so I instead opted for a sensible default of localhost.

    opened by willvincent 3
  • Feature Request - host-based buckets for Minio

    Feature Request - host-based buckets for Minio

    minio has included support for host-based (subdomain) buckets for several years, to use it, it's necessary to pass a flag to minio specifying the domain. AWS will be (at some point) deprecating path-based buckets, so it would be good to at least optionally support this before then.

    From a minio github issue back in 2017:

    This feature is on only when server is started with --address

    From the docs:

    By default, MinIO supports path-style requests that are of the format http://mydomain.com/bucket/object. MINIO_DOMAIN environment variable is used to enable virtual-host-style requests. If the request Host header matches with (.+).mydomain.com then the matched pattern $1 is used as bucket and the path is used as object.

    Example:

    export MINIO_DOMAIN=mydomain.com
    
    minio server /data
    

    I believe this means if we optionally collect a domain name (ie: minio.test, minio.localdomain, etc) and pass that into the docker container as an environment variable, dns buckets should work, which would future proof for whenever amazon eventually drops path based bucket support, and allow use of current tools that (kind of stupidly, imho) don't support path-based buckets.

    opened by willvincent 1
  • Add Solr service

    Add Solr service

    Adds a solr service. I needed for a project myself. But I can understand if you don't want it included in the project, since it is not that popular anymore.

    Still, because of the small amount (a single file) of code, the package maintainability wouldn't increase. That's why I created this PR.

    opened by markwalet 0
  • Compatibility to PHP 8.1

    Compatibility to PHP 8.1

    Hello,

    using takeout, I am getting this error:

    ➜  ~ takeout --help
    
    Deprecated: Return type of HumbugBox3130\KevinGH\RequirementChecker\RequirementCollection::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/.box/src/RequirementCollection.php on line 12
    
    Deprecated: Return type of HumbugBox3130\KevinGH\RequirementChecker\RequirementCollection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/.box/src/RequirementCollection.php on line 16
    
    Deprecated: Return type of PhpOption\Some::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/phpoption/phpoption/src/PhpOption/Some.php on line 152
    
    Deprecated: Return type of PhpOption\None::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/phpoption/phpoption/src/PhpOption/None.php on line 118
    
    Deprecated: Return type of Symfony\Component\Finder\Finder::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/finder/Finder.php on line 608
    
    Deprecated: Return type of Symfony\Component\Finder\Finder::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/finder/Finder.php on line 690
    
    Deprecated: Return type of Symfony\Component\Finder\Iterator\FileTypeFilterIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php on line 42
    
    Deprecated: Return type of Symfony\Component\Finder\Iterator\ExcludeDirectoryFilterIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php on line 55
    
    Deprecated: Return type of Symfony\Component\Finder\Iterator\ExcludeDirectoryFilterIterator::hasChildren() should either be compatible with RecursiveIterator::hasChildren(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php on line 74
    
    Deprecated: Return type of Symfony\Component\Finder\Iterator\ExcludeDirectoryFilterIterator::getChildren() should either be compatible with RecursiveIterator::getChildren(): ?RecursiveIterator, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php on line 82
    
    Deprecated: Return type of Symfony\Component\Finder\Iterator\FilenameFilterIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/finder/Iterator/FilenameFilterIterator.php on line 28
    
    Deprecated: Return type of Symfony\Component\Finder\Iterator\PathFilterIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/finder/Iterator/PathFilterIterator.php on line 27
    
    In HelperSet.php line 22:
                                                                                                                                                                                                               
      During inheritance of IteratorAggregate: Uncaught ErrorException: Return type of Symfony\Component\Console\Helper\HelperSet::getIterator() should either be compatible with IteratorAggregate::getItera  
      tor(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfo  
      ny/console/Helper/HelperSet.php:94                                                                                                                                                                       
      Stack trace:                                                                                                                                                                                             
      #0 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/console/Helper/HelperSet.php(22): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8192, 'Return  
       type of ...', 'phar:///Users/r...', 94)                                                                                                                                                                 
      #1 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/.box/vendor/composer/ClassLoader.php(478): include('phar:///Users/r...')                                                      
      #2 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/.box/vendor/composer/ClassLoader.php(346): Composer\Autoload\includeFile('phar:///Users/r...')                                
      #3 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/console/Application.php(1065): Composer\Autoload\ClassLoader->loadClass('Symfony\\Compone...')                 
      #4 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/console/Application.php(321): Symfony\Component\Console\Application->getDefaultHelperSet()                     
      #5 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/console/Command/Command.php(140): Symfony\Component\Console\Application->getHelperSet()                        
      #6 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/console/Application.php(489): Symfony\Component\Console\Command\Command->setApplication(Object(Illuminate\Con  
      sole\Application))                                                                                                                                                                                       
      #7 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/illuminate/console/Application.php(249): Symfony\Component\Console\Application->add(Object(Symfony\Component\Console\  
      Command\HelpCommand))                                                                                                                                                                                    
      #8 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/illuminate/console/Application.php(238): Illuminate\Console\Application->addToParent(Object(Symfony\Component\Console  
      \Command\HelpCommand))                                                                                                                                                                                   
      #9 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/console/Application.php(1236): Illuminate\Console\Application->add(Object(Symfony\Component\Console\Command\H  
      elpCommand))                                                                                                                                                                                             
      #10 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/symfony/console/Application.php(487): Symfony\Component\Console\Application->init()                                   
      #11 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/illuminate/console/Application.php(249): Symfony\Component\Console\Application->add(Object(NunoMaduro\Collision\Adap  
      ters\Laravel\Commands\TestCommand))                                                                                                                                                                      
      #12 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/illuminate/console/Application.php(238): Illuminate\Console\Application->addToParent(Object(NunoMaduro\Collision\Ada  
      pters\Laravel\Commands\TestCommand))                                                                                                                                                                     
      #13 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/illuminate/console/Application.php(260): Illuminate\Console\Application->add(Object(NunoMaduro\Collision\Adapters\La  
      ravel\Commands\TestCommand))                                                                                                                                                                             
      #14 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/illuminate/console/Application.php(274): Illuminate\Console\Application->resolve('NunoMaduro\\Coll...')               
      #15 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/illuminate/support/ServiceProvider.php(396): Illuminate\Console\Application->resolveCommands(Array)                   
      #16 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/illuminate/console/Application.php(151): Illuminate\Support\ServiceProvider->Illuminate\Support\{closure}(Object(Ill  
      uminate\Console\Application))                                                                                                                                                                            
      #17 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/illuminate/console/Application.php(74): Illuminate\Console\Application->bootstrap()                                   
      #18 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/laravel-zero/foundation/src/Illuminate/Foundation/Console/Kernel.php(330): Illuminate\Console\Application->__constru  
      ct(Object(LaravelZero\Framework\Application), Object(Illuminate\Events\Dispatcher), 'v1.8.12')                                                                                                           
      #19 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/laravel-zero/framework/src/Kernel.php(133): Illuminate\Foundation\Console\Kernel->getArtisan()                        
      #20 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/laravel-zero/framework/src/Kernel.php(102): LaravelZero\Framework\Kernel->bootstrap()                                 
      #21 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/vendor/laravel-zero/framework/src/Kernel.php(89): LaravelZero\Framework\Kernel->ensureDefaultCommand(Object(Symfony\Compone  
      nt\Console\Input\ArgvInput))                                                                                                                                                                             
      #22 phar:///Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout/takeout(36): LaravelZero\Framework\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Compone  
      nt\Console\Output\ConsoleOutput))                                                                                                                                                                        
      #23 /Users/ahoi/.composer/vendor/tightenco/takeout/builds/takeout(14): require('phar:///Users/r...')                                                                                                  
      #24 {main}                                                                                                                                                                                               
    

    No problem, I will switch back to 8.0 - is there any ETA for 8.1? Unfortunately I can't contribute by myself at the moment, but I'd be happy to sponsor this package, but the sponsorship-option is disabled.

    opened by ahoiroman 11
  • Add OpenSearch service

    Add OpenSearch service

    Adds OpenSearch as a service.

    AWS no longer has a relationship with ElasticSearch and have moved to the OpenSearch standard, forking from version 7.10.2 of ElasticSearch. This allows development directly against OS

    opened by therobfonz 1
  • Mongo install fails

    Mongo install fails

     OUT  4.2.16-rc0-nanoserver-1809: Pulling from library/mongo
     ERR  no matching manifest for linux/arm64/v8 in the manifest list entries
    Enabling mongo...
    
     ERR  Unable to find image 'mongo:4.2.16-rc0-nanoserver-1809' locally
     ERR  4.2.16-rc0-nanoserver-1809: Pulling from library/mongo
     ERR  docker: no matching manifest for linux/arm64/v8 in the manifest list entries.
     ERR  See 'docker run --help'.
    
    Failed installing mongo
    
    opened by morrislaptop 2
Releases(v1.8.12)
  • v1.8.12(Nov 23, 2021)

  • v1.8.11(Aug 19, 2021)

    • Allow choosing custom Docker images when enabling Takeout services (#237)
    • Create custom tag parser for Minio to better get the most recent tags (#249)
    • Update Minio to request root user and password instead of deprecated access key and secret key (#249)
    Source code(tar.gz)
    Source code(zip)
  • v1.8.10(Aug 4, 2021)

  • v1.8.9(Aug 4, 2021)

  • v1.8.8(Aug 2, 2021)

  • v1.8.7(Aug 2, 2021)

  • v1.8.6(Apr 3, 2021)

  • v1.8.5(Feb 9, 2021)

  • v1.8.4(Jan 20, 2021)

  • v1.8.3(Jan 19, 2021)

    • Allow for passing more than one container ID to start (#192)
    • Allow for passing --all flag to start to start all stopped containers (#192)
    Source code(tar.gz)
    Source code(zip)
  • v1.8.2(Jan 12, 2021)

  • v1.8.1(Jan 12, 2021)

  • v1.8.0(Dec 21, 2020)

  • v1.7.1(Dec 4, 2020)

  • v1.7.0(Dec 1, 2020)

  • v1.6.5(Nov 30, 2020)

  • v1.6.4(Nov 11, 2020)

  • v1.6.3(Nov 11, 2020)

  • v1.6.2(Nov 11, 2020)

  • v1.6.1(Nov 9, 2020)

  • v1.6.0(Nov 9, 2020)

    New feature:

    • Add networking support (#170)

    New services:

    • Add SQS support (#171)
    • Add SFTP server support (#1680

    Tweaks and bug fixes:

    • Add docker.elastic.co support for Elastic images (#119)
    • Upgrade to Guzzle 7 (#147)
    • Handle missing container error better (#155)
    Source code(tar.gz)
    Source code(zip)
  • v1.5.1(Oct 12, 2020)

  • v1.5.0(Oct 12, 2020)

    • Verify a volume already exists before passing it to Docker (#129)
    • Add --default option to the enable command, to select all the defaults of a command and bypass the UI (#133)
    • Add --all option to the disable command, to disable all services (#133)
    • Group the services enable list by categories (#135)
    Source code(tar.gz)
    Source code(zip)
  • v1.4.0(Sep 26, 2020)

  • 1.3.2(Sep 23, 2020)

    • Adds a check for OS version to display the option to stop the Docker service. Currently, only macOS will provide the option after the last running container is disabled. ( #132 )
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Sep 14, 2020)

    • Fixes missing method in Shell model. (1d96257d73279b87b463d705385fde4fc769145d)
    • Add message on enable that default password for MySQL is null. (d3c395629b7c7f2abebe822bc7ea3e74b0102856)
    • "No containers to disable" message. (50570e278f13f81cd512f720a0fcf7a35bc8d0fb)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Sep 14, 2020)

    • Added MongoDB Service (#108)
    • Added JSON output flag takeout list —json (#111 )
    • Message “No Takeout containers are enabled.” displays for empty takeout list (non-json flag)(#118 )
    • Implemented mysql_native_password native authentication plugin for all MySQL containers (#116)
    • More accurate port usage warning (55a997ecdd9d6bdace1d08ca9e5e1c81b6002d6f)
    • MySQL default password is NULL - following default Laravel .env convention (#115)
    • Added FAQ about volume persistence (#110)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.6(Sep 9, 2020)

    • Tweak output formatting
    • Update all variables to hopefully be cross-OS compatible (#102)
    • Take steps toward fixing Minio, but likely still not fully working (#103, https://github.com/tightenco/takeout/commit/0204d16e3fd4e1fc5e6f9e4aa148a13e95b44a9b)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.5(Sep 8, 2020)

  • v1.2.4(Sep 8, 2020)

    • Add Beanstalkd (#99)
    • Allow for images that only have one tag, "latest" (077c5aec88a4b18f2f4f6fc21bbc246ea4b6fe01)
    • Update docker "is running" check to use docker info (#100, for Windows compatibility)
    • Fix Minio run command (#101)
    Source code(tar.gz)
    Source code(zip)
Owner
Tighten
Tighten
Patrol is an elegant command-line tool that keeps your PHP Project's dependencies in check.

Patrol is an elegant command-line tool that keeps your PHP Project's dependencies in check. Installation / Usage Requires PHP 8.0+ First, install Patr

Nuno Maduro 223 Jan 9, 2022
A PHP Command Line tool that makes it easy to compile, concat, and minify front-end Javascript and CSS/SCSS dependencies.

Front End Compiler A PHP Command Line tool that makes it easy to compile, concat, and minify front-end Javascript and CSS/SCSS dependencies. The minif

Happy Medium 2 Nov 12, 2021
A tiny REPL for PHP

Boris A tiny, but robust REPL for PHP. Announcement: I'm looking to add one or two additional collaborators with commit access. If you are actively in

null 2.2k Jan 6, 2022
PHP CLI tool which allows publishing zipped MODX extra to modstore.pro marketplace

MODX Extra Publisher PHP CLI tool which allows publishing zipped MODX extra to modstore.pro marketplace. Installation global? local? To install packag

Ivan Klimchuk 3 Aug 6, 2021
Skeleton for creating a new Command Line Interface application with a minimum of dependencies.

Skeleton for creating a new Command Line Interface application with a minimum of dependencies.

Richard van Laak 1 Jan 17, 2022
A CLI program that helps you check your endpoints by requesting the given servers and send a report message in any supported channel like Telegram

API Monitor A CLI program that help you check your endpoints by requesting the given servers and send a report message in any supported channel ( Tele

Hussein Feras 51 Dec 22, 2021
🖥 Build beautiful PHP CLI menus. Simple yet Powerful. Expressive DSL.

Contents Minimum Requirements Installation Upgrading Usage Quick Setup Examples API Appearance Menu Title Colour Width Padding Margin Borders Exit But

PHP School 1.8k Jan 13, 2022
An Elegant CLI Library for PHP

Commando An Elegant PHP CLI Library Commando is a PHP command line interface library that beautifies and simplifies writing PHP scripts intended for c

Nate Good 788 Jan 7, 2022
Cilex a lightweight framework for creating PHP CLI scripts inspired by Silex

Cilex, a simple Command Line Interface framework Cilex is a simple command line application framework to develop simple tools based on Symfony2 compon

null 624 Jan 15, 2022
PHP Version Manager for the CLI on Windows

This package has a much more niche use case than nvm does. When developing on Windows and using the integrated terminal, it's quite difficult to get those terminals to actually listen to PATH changes.

Harry Bayliss 19 Nov 23, 2021
Library for creating CLI commands or applications

Console Motivation: this library purpose is to provide a lighter and more robust API for console commands and/or applications to symfony/console. It c

Théo FIDRY 4 Oct 20, 2021
A handy set of Stringable mixins for CLI text.

Laravel Colorize A mixin for Laravel's Stringable to easily apply colors and styles to CLI text. Installation You can install the package via Composer

James Brooks 46 Nov 15, 2021
PHP CLI project to get an appointment from https://vacunacovid.catsalut.gencat.ca

covid_vaccine_bcn PHP CLI project to get an appointment from https://citavacunacovid19.catsalut.gencat.cat/Vacunacio_Covid/Vacunacio/VacunacioCovidRes

Gabriel Noé González 3 Jul 27, 2021
PHP CLI to add latest release notes to a CHANGELOG

changelog-updater A PHP CLI to update a CHANGELOG following the "Keep a Changelog" format with the latest release notes. Want to automate the process

Stefan Zweifel 6 Nov 25, 2021
unofficial cli built using php which can be used to upload and download files from anonfiles.com

Anonfiles CLI Table of Contents Introduction Features Screenshots Installation Contributing License Introduction Anon Files CLI can upload and downloa

Albin Varghese 4 Jan 1, 2022
WP-CLI Trait Package Command

WP-CLI Trait Package Command Generate plugin or php model files e.g. post-type or taxonomy for WP-Trait Package in Develop WordPress Plugin. Installat

Mehrshad Darzi 2 Dec 17, 2021
Termage provides a fluent and incredibly powerful object-oriented interface for customizing CLI output text color, background, formatting, theming and more.

Termage provides a fluent and incredibly powerful object-oriented interface for customizing CLI output text color, background, formatting, theming and

TERMAGE 63 Jan 11, 2022
A CLI starter pack for developing a package with Laravel 5

Laravel PackMe Laravel PackMe is a project starter pack which combine all basic stuff (src, tests) in order to develop a package for Laravel 5.*. It t

Pierre Tondereau 63 Dec 29, 2021