I have compared some aspects of Docksal and Lando. Next I will present a summary of particular features I have focused on. It is not a complete list of features; nonetheless, I consider that they are some of the most important for a local development environment focused on customer work.
Both Docksal and Lando are managed from the command line; none of them have a graphic user interface. Both options provide a command line with different (but similar) commands. As an example, we have:
- To start the containers of a project :lando start, fin start. (“Fin” being the Docksal command line)
- To stop the project containers: lando stop, fin stop.
As Lando evolved from Kalabox, there are talks of a GUI available as part of a paid version in the future.
As both options are based on Docker, each project on your local storage has its own set of containers. I have found that a project requires around 500 MB of storage space (without taking into account the project data). Obviously, this can rapidly accumulate according to the amount of projects that are on the local. This can add up quickly depending on how many projects you keep on your local system.
Compatibility with the Drupal console and Drush
Docksal and the Lando command line provide a command to execute Drush commands: fin drush
Support and documentation
Both options have problem support resources and real-time chat support. Additionally, both have a relatively good documentation if both their rapid-development timeline and their frequent additions and updates are taken into account.
The update frequency is both a security measure and the project drive. In both cases, the development is ongoing as updates are very frequent.
- Docksal: last version 1.17.0, April 15, 2022
- Lando: last version 3.6.5, April 22, 2022
Docksal can be executed without internet connection, adding manually an entry to its host file through the command "fin hosts add mysite.docksal".
Lando hasx a documentation page about offline development, but it is only for Mac OS X and the process is a bit more complicated.
Both Lando and Docksal have the ability to exchange different versions of PBP through their configuration files.
Docksal allows you to select a php.ini file as a part of the project configuration. The guidelines of this file will override any default PHP configuration provided by the container.
Lando has some support for some PHP configurations as part of its configuration files, and it also supports a php.ini file as a part of the project configuration.
With both tools, it is possible to enter the CLI container and modify the php.ini configuration directly; nonetheless, with this approach these changes are only temporary, the next time that the container is built, the personalized php.ini will be lost.
The method that I used to calculate the time of execution was taking a real-client site (Drupal 8), put it to work on both programs (sequentially) and measuring the rime that it took to execute a "drush cache-rebuild all". I executed the command three times for each option, and then I calculated the average. Other factors that depend on the site and configuration can come into play (having Xdebug enabled could have an impact on performance) and so the times might vary.
- Docksal: 20 seconds
- Lando: 89 seconds
Docksal has an “automatic stand-alone CLI container”. This is a container that is not linked to a specific project, and it is always available. A big advantage of this container is that it can be used to execute Composer commands without having Composer downloaded in the host operating system. This is an advantage on Windows because installing composer can be complicated (due to its dependence on PHP).
Docksal uses a separate command to start and stop its main virtual machine (fin vm start/stop). It is not an issue, only an additional step (but the performance gains are worth it, as previously shown).
Docksal is fast. But once the maintainers decide to use of the Mac/ Windows predetermined Docker, it will be on equal footing with Lando, but for now it is just fast. I also like that Docksal includes a “fin run-cli" command that allows the Composer commands (e.g., “composer create-project”) to run before configuration of the containers of a project. I find it very useful.
Lando’s integration with Pantheon is very good. The ability to push and pull code, databases, and/or files facilitates Pantheon site integration.