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

Comments
  • 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 24
  • 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
  • Pass custom docker run parameters when enabling a service

    Pass custom docker run parameters when enabling a service

    I would love to have the ability to pass additional arbitrary custom docker run parameters to the services when initially enabling them. For example:

    • For the MySQL container, pass -e TZ=America/Chicago to set the timezone via an environment variable
    • To auto-restart a container when docker starts, pass --restart unless-stopped

    I'm envisioning a simple text prompt in the enable menu after all the other service-specific prompts, where you can type in any additional custom parameters. These just then get inserted into to the docker run template after the other build parameters. Looking at how Takeout is structured, I don't think this would be too hard to implement, and it would go a long way in making it more versatile and giving people a simple persistent workaround to controlling various docker features.

    Another even simpler option would be to just echo out the docker run command used when enabling a service, so that one could re-run it manually and tack on whatever else they wanted. Or maybe that could be disabled by default but available as an option via a Takeout verbosity config setting or cli parameter.

    #189 is related, but I think slightly different in that they're asking for a non-menu-driven way of enabling Takeout-managed containers.

    opened by wunc 14
  • 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
  • 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
  • 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
  • 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
  • Fix ordering issue with passthrough parameters

    Fix ordering issue with passthrough parameters

    Passthrough parameters were being added to the end of the run commands, after the image name and tag. However, those parameters should be passed through to the command before that. The simplest solution, in my opinion, is to reorder those strings at the base command enable function. I tested this with passing custom ports as well as custom volumes.

    This PR would resolve #299 as well as #301.

    opened by josecanhelp 11
  • 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
  • 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
  • Failed installing mongo

    Failed installing mongo

    hello, i've problems with mongo db

    i got this error

    OUT 6.0.3-nanoserver-ltsc2022: Pulling from library/mongo ERR no matching manifest for linux/amd64 in the manifest list entries Enabling mongo...

    ERR Unable to find image 'mongo:6.0.3-nanoserver-ltsc2022' locally ERR 6.0.3-nanoserver-ltsc2022: Pulling from library/mongo ERR docker: no matching manifest for linux/amd64 in the manifest list entries. ERR See 'docker run --help'.

    Failed installing mongo

    Docker version 20.10.21, build baeda1f

    mac os ventura 13.1 (intel) Takeout v2.2.0

    opened by wrtisans 0
  • New/better SingleStore dev image

    New/better SingleStore dev image

    There's a better option to host SingleStore and that is through the official dev image they have. It's lighter than the cluster-in-a-box image.

    https://github.com/singlestore-labs/singlestoredb-dev-image

    Is it possible to update the current image to this new one?

    I'm not sure about backward compatibility with the current image (data/volume locations are different).

    opened by larskoole 1
  • Changed the MSSQL image for one that works on M1

    Changed the MSSQL image for one that works on M1

    Changed

    • Changes the MSSQL image from mssql/server to azure-sql-edge which seems to be one that works on both M1 and Intel-based machines.

    Note: We have only tested that when using the new image, the container (service) is able to run on M1 machines, we didn't fully tested if this image is a full replacement of the previous one. The issue of where this change originated from mentions this article which seems to imply it's a replacement.

    resolves #293

    opened by tonysm 1
  • SQL Server on Mac M1 fails to start

    SQL Server on Mac M1 fails to start

    Fails with the message: ERR WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

    If it helps, the following command works docker run -e "ACCEPT_EULA=1" -e "MSSQL_SA_PASSWORD=MyPass@word" -e "MSSQL_PID=Developer" -e "MSSQL_USER=SA" -p 1433:1433 -d --name=sql mcr.microsoft.com/azure-sql-edge

    Taken from https://medium.com/geekculture/docker-express-running-a-local-sql-server-on-your-m1-mac-8bbc22c49dc9

    opened by morrislaptop 1
  • Improve Start and Stop DX

    Improve Start and Stop DX

    Changed

    • Adds the ability to start and stop containers by service name. Currently, to start/stop specific containers we need to pass the container ID. With this change, we get the ability to also pass the service name of such containers. This makes the start/stop commands behave closer to enable/disable.

    Before:

    takeout start 123123123
    

    Now:

    takeout start mysql
    

    resolves #284

    opened by tonysm 0
Releases(v2.3.0)
  • v2.3.0(Dec 26, 2022)

    What's Changed

    • Add Couchbase to database services by @therobfonz in https://github.com/tighten/takeout/pull/300
    • Add prompts for security on OpenSearch and ElasticSearch services by @datashaman in https://github.com/tighten/takeout/pull/288

    New Contributors

    • @datashaman made their first contribution in https://github.com/tighten/takeout/pull/288

    Full Changelog: https://github.com/tighten/takeout/compare/v2.2.0...v2.3.0

    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Nov 18, 2022)

  • v2.1.1(Aug 5, 2022)

  • v2.1.0(Jul 12, 2022)

    What's Changed

    • Allow passing through additional options after the enable command by @mattstauffer in https://github.com/tighten/takeout/pull/294

    Full Changelog: https://github.com/tighten/takeout/compare/v2.0.4...v2.1.0

    Source code(tar.gz)
    Source code(zip)
  • v2.0.4(Mar 12, 2022)

    What's Changed

    • Prompt to stop Docker in Mac, Windows, and Linux after disabling last container by @mattstauffer & @ThirumlaDevi in https://github.com/tighten/takeout/pull/283

    Full Changelog: https://github.com/tighten/takeout/compare/v2.0.3...v2.0.4

    Source code(tar.gz)
    Source code(zip)
  • v2.0.3(Mar 10, 2022)

    What's Changed

    • Mssql add data volume by @bandgeekndb in https://github.com/tighten/takeout/pull/275

    Full Changelog: https://github.com/tighten/takeout/compare/v2.0.2...v2.0.3

    Source code(tar.gz)
    Source code(zip)
  • v2.0.2(Mar 4, 2022)

  • v2.0.1(Mar 4, 2022)

    What's Changed

    • Commit composer.lock and update build by @bandgeekndb in https://github.com/tighten/takeout/pull/278

    Full Changelog: https://github.com/tighten/takeout/compare/v2.0.0...v2.0.1

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Feb 28, 2022)

    What's Changed

    • Upgrade Laravel Zero to v9 (to add PHP 8.1 support) by @bandgeekndb in https://github.com/tighten/takeout/pull/274

    Full Changelog: https://github.com/tighten/takeout/compare/v1.8.13...v2.0.0

    Source code(tar.gz)
    Source code(zip)
  • v1.8.13(Feb 24, 2022)

    What's Changed

    • Add Soketi service by @willvincent in https://github.com/tighten/takeout/pull/268
    • Add Solr service by @markwalet in https://github.com/tighten/takeout/pull/262
    • Add OpenSearch service by @therobfonz in https://github.com/tighten/takeout/pull/253
    • Set Minio domain to allow dns buckets by @willvincent in https://github.com/tighten/takeout/pull/265

    New Contributors

    • @railto made their first contribution in https://github.com/tighten/takeout/pull/261
    • @markwalet made their first contribution in https://github.com/tighten/takeout/pull/263
    • @willvincent made their first contribution in https://github.com/tighten/takeout/pull/268

    Full Changelog: https://github.com/tighten/takeout/compare/v1.8.12...v1.8.13

    Source code(tar.gz)
    Source code(zip)
  • 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)

Owner
Tighten
Tighten
☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server

☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server / PHP 命令行模式开发框架,支持 Swoole、WorkerMan、FPM、CLI-Server

Mix PHP 1.8k Jan 3, 2023
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 237 Nov 14, 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 Cli tool to save you time, and gives you the power to scaffold all of your models,controllers,commands

A Cli tool to save you time, and gives you the power to scaffold all of your models,controllers,commands... at once Installation You can install the p

Coderflex 16 Nov 11, 2022
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 Dec 30, 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
BetterWPCLI - a small, zero-dependencies, PHP library that helps you build enterprise WordPress command-line applications.

BetterWPCLI - a small, zero-dependencies, PHP library that helps you build enterprise WordPress command-line applications.

Snicco 5 Oct 7, 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 Aug 21, 2022
🖥 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.9k Dec 28, 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 793 Dec 25, 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 Dec 6, 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 49 Dec 19, 2022
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 16 Dec 28, 2022
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 47 Oct 30, 2022
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 15 Sep 21, 2022
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 8 Nov 21, 2022