tightenco/takeout
Takeout is a Laravel package and CLI for running local development services like MySQL, Redis, Postgres, and Mailhog via Docker. Define the services you need in a simple config file, then start, stop, and connect to them with a single Artisan command.
require-dev Composer package with a narrow job: generate and drive a per-project docker-compose.yml for backing services such as MySQL, MariaDB, PostgreSQL, Redis, Memcached, Mailpit/Mailhog, and MinIO. The PM decision is whether to adopt a maintained thin wrapper or fund an internal Docker harness. For standard Laravel teams, the wrapper usually wins on cost and time-to-value. Build internally only when policy requires approved registries, hardened images, network isolation, or other controls a developer-convenience CLI will not provide.composer require --dev tighten/takeout, ./vendor/bin/takeout enable mysql, copy the printed port into .env, run migrations. PMs can treat this as a low-cost intervention against onboarding time, environment variance, and “works on my machine” incidents. Instrument time-to-first-successful-migrate and setup-related support tickets before and after a pilot.docker-compose.yml and bind host ports. The decision to standardize on Takeout, Sail, DDEV, or a platform environment should be made once per project, ideally once per org as a default, and recorded. Running Takeout alongside Sail on the same repository is a known failure mode, not a developer preference.takeout disable preserves data, while docker compose down -v destroys volumes. PMs should make that distinction explicit in onboarding docs.docker-compose.yml as a reviewable artifact: commit it, pin image tags, regenerate rather than hand-edit, and use docker-compose.override.yml for customizations so they survive regeneration.enable can assign a different host port and Takeout does not rewrite .env. PMs should assign an internal owner, document the port workflow, clarify that Takeout is not a CI/staging/production tool, and set expectations that Docker Engine and Compose v2 are prerequisites.Consider Takeout when:
.env port updates, use an override file for custom services or platform settings, and avoid mixing orchestrators.Look elsewhere or do not adopt when:
.env injection. Takeout is a developer-convenience CLI, not a platform.amd64-only images..env mismatches, and volume-reset confusion.For executives: Takeout is a low-risk, MIT-licensed developer productivity tool for Laravel teams. It reduces the time from clone to running app by replacing manual installation of MySQL, Redis, Mailpit, and similar services with one-command Docker containers. It is not production infrastructure, does not create vendor lock-in, and is cheap to pilot. Measure success through onboarding time, environment-related support tickets, and developer feedback. Approve a small pilot on one repository, with an internal owner and documented guardrails, before making it an org default.
For engineering: Takeout generates a readable per-project docker-compose.yml and manages backing services through simple commands. Use it for local development only. Commit the generated YAML, pin image tags immediately, and put custom services, healthchecks, or platform settings in docker-compose.override.yml. Regenerate services with disable then enable rather than hand-editing the base file. Document that disable preserves data, down -v wipes it, .env ports must be updated after re-enable, and 127.0.0.1 is safer than localhost for database hosts. Do not run it alongside Sail, and do not wrap it into CI.
Recommended pilot: choose one Laravel repository, verify docker compose version, add Takeout as a dev dependency, enable MySQL and Mailpit, wire .env, run migrations, and update the README with the exact commands and reset semantics. Track time-to-first-migrate and setup incidents for two sprints. If the workflow proves reliable, standardize it as the default for suitable projects and record the decision against Sail/DDEV alternatives. If support burden outweighs the onboarding gains, fall back to the existing platform without broadening Takeout’s scope.
How can I help you explore Laravel packages today?