Warden is a CLI utility for orchestrating Docker based developer environments, and enables multiple local environments to run simultaneously without port conflicts via the use of a few centrally run services for proxying requests into the correct environment's containers.
- Traefik for SSL termination and routing/proxying requests into the correct containers.
- Portainer for quick visibility into what's running inside the local Docker host.
- Dnsmasq to serve DNS responses for
.testdomains eliminating manual editing of/etc/hosts - An SSH tunnel for connecting from Sequel Pro or TablePlus into any one of multiple running database containers.
- Warden issued wildcard SSL certificates for running https on all local development domains.
- Full support for Magento 1, Magento 2, Laravel, Symfony 4, Shopware 6 on both macOS and Linux.
- Ability to override, extend, or setup completely custom environment definitions on a per-project basis.
All contributions to the Warden project are welcome: use-cases, documentation, code, patches, bug reports, feature requests, etc. Any and all contributions may be made by submitting Issues and Pull Requests here on GitHub.
Please note that by submitting a pull request or otherwise contributing to the Warden project, you warrant that each of your contributions is an original work and that you have full authority to grant rights to said contribution and by so doing you grant the owners of the Warden project, and those who receive the contribution directly or indirectly, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license to make, have made, use, offer to sell, sell and import or otherwise dispose of the contributions alone or with the Warden project in it's entirety.
- warden -
wardencommands and docker-compose files - images - Docker images to be used by the docker-compose files
- docs - Documentation (docs.warden.dev)
- homebrew-warden - Mac's Homebrew installation instructions and requirements
This work is licensed under the MIT license. See LICENSE file for details.
This project was started in 2019 by David Alger.
The mutagen can significantly improve the performance of the big projects.
Which contains a huge number of small files on macOS based systems.
For an instance, we can consider the projects which might have a lot of libraries/packages installed
under the vendor or node_modules directories.
For enabling mutagen on the predefined container,
you just need to assign the container name at the .env file,
to the variable MUTAGEN_CONTAINER_FOR_SYNC.
For an instance it might look like the following MUTAGEN_CONTAINER_FOR_SYNC=nuxt-nodejs.
Also, you need to create syncing rules file, for the mutagen, by the path .warden/mutagen.yml.
Such file might look like the following.
As an option you may add the variable MUTAGEN_CONTAINER_SYNC_TO_DIR,
the value of this variable will override the base container path, i.e. /var/www/html.
Example: MUTAGEN_CONTAINER_SYNC_TO_DIR="/app"
---
sync:
defaults:
mode: two-way-resolved
watch:
pollingInterval: 10
ignore:
vcs: false
paths:
# Root .git folder
- "/.git/"
- "/.github/"
# System files
- ".DS_Store"
- "._*"
# Vim files
- "*~"
- "*.sw[a-p]"
# NodeJS files
- "/node_modules/**"
- "/docs/**"
- "/kubernetes/**"
- "/packages/**"
permissions:
defaultFileMode: "0644"
defaultDirectoryMode: "0755"
Support Warden Development on OpenCollective or Github Sponsors