- Removed deprecated first-class commands
warden down, and
warden restart; please use
warden svc <verb>to manage global services such as Traefik, Portainer, Mailhog, etc (#205 by @davidalger)
- Added a new
wordpressenvironment type pre-configured for running the Wordpress application (#206 by @jamescowie)
- Changed all
:cachedmounts to preserve existing behavior of mounts when new behavior in Docker Desktop Edge 220.127.116.11 is promoted to stable channel (#204 by @davidalger)
- Updated default version of PHP for new
magento2environments to PHP 7.4
- Updated default version of Elasticsearch for new
magento2environments to Elasticsearch 7.6
- Updated default version of Elasticsearch where unspecified in project’s
.envfile to Elasticsearch 7.8
- Dropped Elasticsearch image builds for versions prior to 6.8 and versions 7.0 through 7.5
- Fixed issue where nginx would unexpectedly exit on Linux due to incorrect default value for
XDEBUG_CONNECT_BACK_HOSTin base nginx configuration (issue #200)
- To ensure Traefik 2.2 version update takes effect, run
warden svc upafter updating.
- Pre-existing projects may need to be re-created to avoid warnings from docker-compose regarding unused named volumes.
BYPASS_VARNISHflag (deprecated in 0.5.0) has been removed. Use toggle
WARDEN_VARNISH=0to disable Varnish.
- Recently updated
php-fpmimages now include the
crondrunning in the background. Be sure you have the latest images by running
warden env pullin the project directory followed by
warden env upto use this functionality. To configure a crontab that is persistent, a crontab file may be mounted at
/var/spool/cron/www-data(std crontab path) via custom configuration in the project’s
warden vnccommand to launch VNC tunnel via SSH or (when installed) launch Remmina (#116 by @lbajsarowicz)
warden dbto print help text when called without any parameters specified
- Updated volume declarations for RabbitMQ and Redis services to use named volumes (avoid use of anonymous volumes)
- Updated version of Traefik from 2.1 to 2.2
warden debugto also pass
php-debugcontainer for the
XDEBUG_REMOTE_HOSTvalue on WSL when Microsoft is present in
/proc/sys/kernel/osrelease(#196 by @LeeSaferite)
- Updated nginx configuration to pass
XDEBUG_CONNECT_BACK_HOSTas environment variable in base config allowing it to be overriden by exported env variable on all host OS envs (#199 by @LeeSaferite)
mailhogbeing changed from running on a per-project basis to running as a global service (see issue #175) you will need to ensure
warden svc uphas been run after updating Warden. On pre-existing projects that already had their own Mailhog container running,
warden env up --remove-orphanswill clean it up.
warden blackfirecommand for easily running profiles via the CLI tool (#188 by @navarr)
mailhogservice to run as a single global service rather than as a per-project service (issue #175)
warden db importto strip usages of
@@SESSION.SQL_LOG_BINfrom database dumps during import process to avoid failures importing databases originating from Amazon RDS (issue #162)
- Added Mutagen sync configuration for
magento1environment type (issue #97)
- Warden now requires
docker-compose1.25.0 or later; see issue #165
- Warden now requires
mutagen0.11.4 or later for environments leveraging sync sessions on Mac OS (currently Magento 2 and Shopware 6 use Mutagen).
warden svccommand to control global services replacing
warden down, and
warden restartand offering further flexibility as this works similar to
warden envin that any verb known to
docker-composemay be used in orchestrating global services such as
portainer; for example,
warden svc updoes what
warden updid previously.
warden envto report an error if Docker does not appear to be running.
warden env upto imply
--detach) to work in like manner to
warden svc up(formerly
warden synccommand now allows use of mutagen sub-commands
- The following version defaults were updated (these defaults apply when versions remain unspecified in a project’s
.envfile; new project
.envfiles may differ by environment type)
- PHP-FPM default updated from 7.3 to 7.4
- Elasticsearch default updated from 6.8 to 7.7
- RabbitMQ default updated from 3.7 to 3.8
- MariaDB default updated from 10.3 to 10.4
warden env-initcommand to prompt user before overwriting an existing
.envfile in a project directory (#166 by @Lunaetic)
warden env-initcommand to prompt user for required arguments when missing (#170 by @Lunaetic)
- Added support for Magepack advanced JS bundling (#138 by @vbuck)
- Added a new
shopwareenvironment type including Mutagen configuration for file sync on macOS (issue #169)
- Added support for implementing custom commands in
<project>/.warden/commands(#172 by @davidalger)
- Added new feature flag
WARDEN_NGINXto enable/disable service on per-project basis. This will allow (for example) using a
localenv type for a static site by adding
WARDEN_NGINX=1to the project’s
- Added ability to pass arguments to and override the database name
db importoperate on (issue #22)
- Fixed issue where specifying
-vflag would short circuit argument parsing (this flag was removed; previously was only used with
warden sync listwhere
warden sync list -lnow accomplishes the same thing by passing the
-lflag to mutagen to list in detail)
- Fixed bug where quoted arguments like
"foo bar"would be passed into sub-route as two arguments,
bar(technical detail of argument parsing; no known cases where this caused an issue)
- Fixed incorrect var name in output of
warden env-initfor Laravel env type
warden startcommand has been deprecated and will be removed in the 0.7.0 release; please use
warden svc startinstead.
warden stopcommand has been deprecated and will be removed in the 0.7.0 release; please use
warden svc stopinstead.
warden upcommand has been deprecated and will be removed in the 0.7.0 release; please use
warden svc upinstead.
warden downcommand has been deprecated and will be removed in the 0.7.0 release; please use
warden svc downinstead.
warden restartcommand has been deprecated and will be removed in the 0.7.0 release; please use
warden svc restartinstead.
- Reverted filtering of GTID SET commands as added in 0.5.2 release to resolve db import errors (issue #162)
- Fixed inability to run
warden debug -c '<command>'in like manner to
warden shell -c ...
- Fixed issue where GTID related SET statements in a database dump failed the import (issue #162)
All docker images have been re-located to a new Docker Hub organization created specifically for use with Warden. All built-in environment types having been updated to reference the images on
docker.io/wardenenv rather than
quay.io/warden. Images currently on Quay will remain available (for at least the next 90-days) in order to preserve functionality of Warden prior to the 0.5.1 release, but these will no longer be updated and are considered deprecated immediately. Where references to
quay.io/warden exist in per-project configuration within the
.warden directory, it is strongly recommended these references be updated to use images from
docker.io/wardenenv. You can quickly check an environment’s configuration for references to images on Quay via the following command:
warden env config | grep quay.io
The backstory, and reason for moving the images, is that in Warden 0.2.0 (circa January 2020) images were relocated from a single Docker Hub repository to individual repositories on Quay.io both as a means of breaking down a mon-repo and also to leverage images scanning of Quay.io. Since that time, Quay.io has had multiple outages, including a recent one which lasted for 19 hours with intermittent inability to pull images as even read-only operations were failing as the service failed to be scaled. This morning Quay.io is down yet again, prompting all-out inability to pull images. Given the saddening instability of Quay.io and the inability to setup a local mirror as you can with Docker Hub it has become painstakingly obvious that the images must be moved back to Docker Hub for a long-term and stable home, with the added benefit that you will now be able to use a local registry service as a pass-through mirror for reducing network bandwidth and/or ensuring you have a copy of all images local to your network should at any time Docker Hub encounter issues in the future.
The new long-term home for Warden docker images can be found here at https://hub.docker.com/u/wardenenv.
- Updated images to reside in the
docker.io/wardenenvregistry on Docker Hub
- Removed usages of images previously on
- Deprecated images on
quay.io/wardenfor planned removal at some point in the future (to be not less than 90-days from today)
PHP_VERSION is not defined in a project’s
.env type the default version is now 7.3 across the board for all environment types. This should not pose any issues for recent
magento2 setups, but
laravel environments will likely require an update to the project’s
.env to continue using PHP 7.2 or rather than 7.3 for local development.
There is a breaking change where custom environment config specific to Linux has been used in the form of placing a
.warden/warden-env.linux-gnu.yml file in the project directory. The value used for
WARDEN_ENV_SUBT on Linux is now
linux rather than
linux-gnu. After upgrading, these files will need to be re-named from
.warden/warden-env.linux.yml. Where continued compatibility with prior versions of Warden is desired (for example, to not require the entire team to upgrade Warden at once), a symlink may be placed to point the old file name to the new one allowing Warden to load the definition correctly on both new and old implementations:
warden-env.linux-gnu.yml -> warden-env.linux.yml
BYPASS_VARNISH flag will continue to work as before but has been deprecated to be removed in a future release. It will no longer be included in the
.env file created for new
magento2 environments. Please use the new feature toggle
WARDEN_VARNISH=0 to disable Varnish instead.
symfonyenvironment type for use with Symfony 4+ (#146 by @lbajsarowicz)
COMPOSER_MEMORY_LIMIT=-1to env on all
php-*containers (#154 by @navarr)
- Added new feature flag
WARDEN_DBto enable/disable service on per-project basis.
- Added new feature flag
WARDEN_ELASTICSEARCHto enable/disable service on per-project basis.
- Added new feature flag
WARDEN_VARNISHto enable/disable service on per-project basis.
- Added new feature flag
WARDEN_RABBITMQto enable/disable service on per-project basis.
- Added new feature flag
WARDEN_REDISto enable/disable service on per-project basis.
- Added new feature flag
WARDEN_MAILHOGto enable/disable service on per-project basis.
WARDEN_ALLUREto now enable Allure container on any environment type.
WARDEN_SELENIUMto now enable Selenium containers on any environment type.
WARDEN_BLACKFIREto now enable Blackfire containers on any environment type.
env-initcommand to include locked values for
localenv type so it can now include common services by adding the above feature flags to the project
php-fpmimages to use
fpm-loadersvariant of base image to include IonCube & SourceGuardian from upstream images
php-fpmimages fix for directory ownership of mounted volume paths for future flexibility by moving it to the
docker-entrypointscript with an env var
CHOWN_DIR_LISTto specify what directories to chown on container startup
- Fixed missing SSH agent forwarding in
- Fixed lack of
blackfire-agentcontainers (issue #145)
- Fixed missing
extra_hostsline for non-subdomain entry in
$OSTYPEcheck for compatibility with OpenSUSE which uses
linux-gnu(#149 by @Den4ik)
- Updated init routine allowing
WARDEN_COMPOSER_DIRto be overriden via environment variables
- Updated environment configuration to reference
- Updated warden global docker config to reference
warden upto return an error when docker is not running rather than blindly attempt to start global services
WARDEN_SYNC_IGNOREto support passing a comma-separated list of additional per-session-ignores to Mutagen when sync sessions are started (#142 by @davidalger)
- Added pause, resume and monitor to
warden synccommand (#141 by @fooman)
- Changed Mutagen sync to pause on
warden env stopand resume on
warden env up -d(#141 by @fooman)
- Removed exclusion of (commonly large) files types (*.sql, *.gz, *.zip, *.bz2) from sync sessions (as introduced in 0.4.0) because it broke the ability to use artifact repositories with composer (#142 by @davidalger)
tmpfsvolumes from sub-directories of
WARDEN_TEST_DB=1was set due to compatibility issues (#139 by @lbajsarowicz)
The introduction of SSH Agent Forwarding support in PR #121 results in Warden now requiring Docker Desktop 18.104.22.168 or later for macOS clients. Please upgrade Docker Desktop prior to upgrading to the latest Warden release to avoid errors relating to unauthorized mounts.
- Added MySQL 5.6 and 5.7 images to Quay repository for use with Warden environments
- Added support for Integration, Unit and API Tests leveraging a
MySQL 5.7container running on
tempfsmemory disk (#115 by @lbajsarowicz)
WARDEN_ALLUREsetting to control Allure separately from Selenium for use reporting on Integration and Unit tests (#117 by @lbajsarowicz)
- Added ssh agent forwarding support on both macOS and Linux hosts (#121 by @davidalger)
- Updated entrypoint in php-fpm images to support mounting PEM files into
- Updated config for Mutagen sync to exclude large files (*.sql, *.gz, *.zip, *.bz2) from sync sessions
- Fixed issue where
WARDEN_ENV_NAMEwould results in
0.0.0.0being used in
extra_hostspassed to containers
- Fixed race condition caused by docker-compose starting two containers with identical mounts simultaneously (issue #110)
- Fixed issue with incorrect network name reference when uppercase characters are present in
- Fixed issue where Mutagen sync autostart would attempt to start when php-fpm container was not running (ex: when executing
warden env up -d dbto start only the db service)
If you’re upgrading from version 0.2.x to 0.3.x for the first time, please reference upgrade notes for Warden 0.3.0 and plan accordingly.
- Fixed issue where
env startwould exit with an error on env types not using Mutagen sessions
- Fixed issue where
env stopwould exit with an error on env types not using Mutagen sessions
The fix for issue #65 required removing the
warden network from each environment’s services (see commit 36cb0174) and as a result environments referencing the
warden network in per-project
.warden/*.yml configuration files may need to be updated for compatibility with Warden 0.3.0.
Should you see an error like the following when running
warden env ... then this applies to you:
ERROR: Service "nginx" uses an undefined network "warden"
To resolve this issue, simply remove the following from each service defined in
.warden/*.yml files on the project similar to what was done in commit 36cb0174 on the base environment definitions:
networks: - warden - default
- Updated to no longer connect environment containers to
wardennetwork and instead peer
tunnelcontainers with each project when it is started (issue #65)
- Added automatic start of Mutagen sync on
env startwhen sync is not connected (issue #90)
- Added automatic stop of Mutagen sync on
env stop(issue #90)
- Updated routing rules so Traefik will now by default route both example.com and *.example.com to application (#111 by davidalger)
- Updated environment path (
WARDEN_ENV_PATHin scripts) to use physical vs logical current working directory to resolve issues with using symlinked file paths (issue #101)
- Removed confusingly quoted placeholder values related to Blackfire from env file generated by
- Removed timeout for Selenium Hub, increased timeout for MFTF’s
command.phpendpoint to 10 minutes (#107 by lbajsarowicz)
- Fixed issue where
warden sync startwould infinitely wait when Mutagen encountered an error (#100 by Lunaetic)
setup:db:statusto report clean (2.3.4 and later) (issue #89)
- Updated sign-certificates command to specify “O” value and “extendedKeyUsage” to comply with stricter SSL guidelines (issue #85)
- Fixed missing CN value on CA used to sign SSL certificates (issue #85)
If you’re upgrading from version 0.1.x to 0.2.x for the first time, please reference upgrade notes for Warden 0.2.0 and plan accordingly.
- Added support for using
~/.warden/.envto configure aspects of Global Services (see docs for details) (issue #13)
sync startto no longer call
mutagen daemon startas Mutagen now does this automatically.
warden installto include short hostname in the common name used when signing the Root CA used by Warden allowing easier identification and interoperability when a single user is running Warden across multiple workstations.
As mentioned below this release of Warden brings with it an update to Traefik 2.1. The v2 line of Traefik completely overhauled the labelling system used to define routes. It also opens the door to new possibilities. All labeling on built-in environment configurations has been updated for compatibility with new versions of Traefik. However, this is a breaking change in the two following scenarios:
localenvironment type is being used. When
localenv type is used, all config is contained in the project’s
.warden/directory and routes setup via labels on the custom containers will naturally need to be updated.
- Projects using custom labels applied via override files such as
.warden/warden-env.ymlmay need to be updated.
Please reference the updated base environment definitions for examples of how to update the labels on custom definitions.
laravel.conf in custom configuration within
.warden directory must update their configuration to reference the generic
application.conf instead as the file was renamed in the Nginx image for re-use in the future on additional environment types.
Docker images have all been re-located and/or mirrored to Quay with all built-in environment types having been updated to reference the images at the new location. Images currently on Docker Hub will remain available in order to preserve functionality of Warden 0.1.x release line (UPDATE These images have been removed as of May 28th, 2020), but will no longer be updated and compatibility with all functionality in Warden 0.2.0 is not guaranteed. Where these images are referenced in per-project configuration within the
.warden directory, it is strongly suggested these references be updated to use images at the new locations:
- Added native support for multi-domain projects without requiring per-project routing configuration. This is accomplished using wildcard rules in the new Traefik labeling configuration allowing Warden to automatically route any sub-domain of the
.envto the nginx and/or varnish container for handling by the application.
warden debugcommand which launches user into Xdebug enabled
php-debugcontainer for debugging CLI based workflows (issue #33; #35 by molotovbliss)
- Added labels to
magento2environment to support use of Live Reload via an injected JS snippet in the site header or footer (issue #62)
WARDEN_ENV_NAMEas prefix to each container hostname in compose configs (issue #29)
BYPASS_VARNISHflag which when set in project
.envfile will cause Traefik to route requests directly to
nginxcontainer rather than
laravelenvironment type to support local development of Laravel based applications (issue #60)
- Added Allure reporting support to Selenium setup for MFTF (#69 by lbajsarowicz)
- Updated Traefik container and configuration to deploy Traefik 2.1; this is a potentially breaking change as Traefik v2 overhauled the labeling used to auto-configure routing on containers. All labeling on built-in environment configurations has been updated, but where labels are used to configure Traefik in per-project configuration files such as in
.warden/warden-env.ymlthe project may require a coordinated update to labeling for continued interoperability of the customizations with Warden 0.2.0+
- Updated Mutagen usage to rely on new commands and configuration in Mutagen 0.10+ (Warden will now throw an error if you attempt to start a sync and have a version of Mutagen older than 0.10.3 installed)
- Updated configuration setup for SSH tunnel container so it will automatically re-instate the needed configuration (if missing) when running
restartto mitigate issue caused by macOS Catalina updates wiping out customizations to
env-initcommand to include default values for available variables in the project’s
.envmaking customization a bit easier (issue #32)
- Updated default Elasticsearch version for
magento2environments from 5.4 to 6.8 (issue #66)
- Updated Selenium setup for MFTF to use hub and headless nodes by default (issue #67; #68 by lbajsarowicz)
- Updated environment templates to pass
php-debugfor use in documented install routine (issue #42)
- Updated default PHP version for
magento2environments from 7.2 to 7.3 (issue #75)
- Updated default Varnish version for
magento2environments from 4.1 to 6.0 (LTS)
laravel.confin nginx image to generic
- Updated defaults for nginx on
magento2environments to be set in the docker env vs built into the nginx image; the image now defaults to loading the generic
- Fixed broken incorrect Blackfire environment template name for magento1 env type (issue #48)
- Fixed inability to get help content specific to env sub-commands using
warden env <command> -h
- Fixed issue breaking SSH tunnel as used for port-forwards.
- Pinned image for Traefik to use
traefik:latestto resolve issues caused by Traefik 2.0 having breaking changes in the configuration API
NODE_VERSIONenvironment variable to specify which version of NodeJS to install in FPM images during container startup (by default v10 is now pre-installed in
mage2-fpmimages at the time of this release; latest images must be pulled from Docker Hub for this to work).
- Fixed issue where if sub-directory included a relative symlink pointing
.envat parent project’s
docker-composecould be specified incorrectly when running warden from within the given sub-directory.
- All published ports now listen on
127.0.0.1by default as opposed to
0.0.0.0for a local environment that is fully inaccessible to the outside world apart from using a proxy (such as Charles).
- Changed the default value
app(previously it would match the environment type)
- Added mount of
~/.warden/ssl/rootca/certs:/etc/ssl/warden-rootca-cert:roto each env type’s
php-debugcontainers to support FPM images appending this CA root to the trusted ca-bundle on container start
extra_hostsentry to set an entry in
php-debugcontainers pointing the project’s primary domain to the Traefik service IP address so
SoapClient(for example) may work inside a project’s FPM services
- Added FPM containers to the “warden” network so they’ll be able to route http requests to Traefik
- Changed Mutagen polling interval from 20 to 10 seconds
generateddirectory from exclusions in Mutagen sync configuration (having this ignored breaks ability to step into generated class files during Xdebug sessions)
- Fixed issue with Mutagen sync cofiguration causing
pub/static(and other files) to have incorrect permissions resulting in 404’ing static resources
- Fixed issue causing
warden envto break when run from a path which contained a space (issue #3)
- Removed exclusion of ‘node_modules’ from Mutagen sync for Magento 2 to avoid breaking Dotdigitalgroup_Email module in vendor directory (this module includes a node_modules dir pre-installed).
- Added ability on linux to prevent warden from touching dns configuration when
- Updated install routine to properly trust CA root on Ubuntu (previously warden install would simply fail)
- Updated DNS auto-configuration on linux systems to handle systemd-resolved usage.
- Fixed issue on Ubuntu where dnsmasq container would fail to bind to port 53.
- Fixed issue where lack of
~/.composerdir (resulting in creation by docker) can cause permissions error inside containers.
- Fixed issue with
bin/magento setup:installallowing it to pass permissions checks (#2 by fooman)
- Fixed issue where
env-initcommands failed to reset shell colors when printing error messages (issue #4)
warden shellcommand for easily dropping into the
php-fpmcontainer (container name is configurable for supporting “local” environment types)
dbcontainers for M1 and M2 environments to avoid imports or upgrade routines from failing on large packets.
php-debugto use custom images based on
centos:7as opposed to the
alpine3.9based official php-fpm images to avoid seg-faults when Source Guardian loader is installed alongside Xdebug.
- Fixed issue with DEFINER stripping in
db importallowing it to correctly strip from both TRIGGERS and ALGORITHM clauses.
- Fixed bug where ‘db’ commands broke due to template overhaul in 0.1.0 release.
- Changed the env type setup to automatically include additional configuration based on $OSTYPE.
- Changed the environment template structure to utilize per-OSTYPE docker-compose config additions where environments differ from one host OS to another (such as
magento2env type, which uses plain mounts on
linux-gnubut sync sessions on
- Fixed a few error messages so they won’t change shell text color permanently when they output.
- Fixed sync command to output error message when any sub-command is run on an env lacking a mutagen configuration.
- Added Xdebug support via additional
php-debugcontainer which Nginx routes to based on presence of
- Fixed Elasticsearch images used in Magento 2 environment templates and configured for lower overall memory utilization upon container start for a smaller env footprint.
- Added support for extending environment configuration on a per-project basis via
localenv type to support projects which do not conform to any of the templated environments suppoprted out-of-the-box
- Changed Traefik configuration to automatically use the warden docker network (eliminates need for
traefik.docker.network=wardenlabel on all proxied containers
- Changed Traefik configuration to require containers be explicitly enabled for Traefik via the label
- Changed docker-compose environment type templates to version 3.5 for better extendability in project override files
- Fixed bug where resolver setup on macOS would fail if
/etc/resolverdir was already present during install (#1 by fooman)
- Fixed issue with docker-compose exit codes would result in error messages from global trap
- Added auto-install of mutagen where not already present when any sync command is run
- Added support for WARDEN_WEB_ROOT env setting to publish a sub-dir into /var/www/html
- Changed images for php-fpm to use environment type specfic images from davidalger/warden repository
- Added “env” command for controlling docker based per-project environments (currently this simply passes all commands and arguments through to docker-compose).
- Added “env-init” to add
.envfile with Warden configuration to the current working directory.
- Added “sync” command with start/stop/list sub-commands for controlling per-project mutagen sessions.
- Added “db” command for connecting to mysql and importing databases into the db service.
- Added three environment types:
magento2-nativewith auto-selecting the correct M2 environment on Linux/macOS.
- Fixed dnsmasq setup on Linux (nameserver is now configured on Linux when NetworkManager service is active during install; tested on Fedora 29)
- Updated assertion to automatically execute “warden install” if installed metadata indicator is older than bin/warden.
- Fixed issue on Linux hosts where ssh_key.pub was unusable inside tunnel container due to bad permissions.