Warden currently supports three environment types. These types are passed to
env-init when configuring a project for local development for the first time. This list of environment types can also be seen by running
warden env-init --help on your command line.
localThis environment type does nothing more than declare the
docker-composeversion and declare the external
wardennetwork which Traefik uses to proxy requests into the project’s containers. When this is used, a
.warden/warden-env.ymlmay be placed in the root directory of the project workspace to define the desired containers, volumes, etc needed for the project. An example of a
localenvironment type being used can be found in the m2demo project.
magento2Provides the necessary containerized services for running Magento 2 in a local development context including Nginx, Varnish, php-fpm (PHP 7.0+), MariaDB, Elasticsearch, RabbitMQ and Redis. In order to achieve a well performing experience on macOS, source files are synced into the container using a Mutagen sync session (
pub/mediaremains mounted using a delegated mount).
magento1Supports development of Magento 1 projects, launching containers for Nginx, php-fpm (PHP 5.5, 5.6 or 7.0+), MariaDB and Redis. Files mounted using delegated mount on macOS and natively on Linux.
laravelSupports development of Laravel projects, launching containers for Nginx, php-fpm, MariaDB and Redis. Files mounted using delegated mount on macOS and natively on Linux.
All environment types (other than
local) come pre-configured with a
mailhog container, with
fpm services configured to use
mhsendmail to ensure outbound email does not inadvertently send out, and allows for simpler testing of email functionality on projects (you can use Traefik to find the
mailhog url for each project). There are also two
php-debug (more on this later) to provide Xdebug support enabled via nothing more than setting the
XDEBUG_SESSION cookie in your browser to direct the request to the
For full details and a complete list of variables which may be used to adjusting things such as PHP or MySQL versions (by setting them in the project’s
.env file), and to see the
docker-compose definitions used to assemble each environment type, look at the contents of the environments directory in this repository. Each environment has a
base configuration YAML file, and optionally a
linux-gnu file which add to the
base definitions anything specific to a given host architecture (this is, for example, how the
magento2 environment type works seamlessly on macOS with Mutagen sync sessions while using native filesystem mounts on Linux hosts). This directory also houses the configuration used for starting Mutagen sync sessions on a project via the
warden sync start command.