Coder Social home page Coder Social logo

core's Introduction

Lando logo

Lando

A Liberating Dev Tool For All Your Projects

The local development and DevOps tool trusted by professional developers across the galaxy.

Free yourself from the mind-forged manacles of lesser dev tools. Save time, headaches, frustration and do more real work.

learn more | what is it good for? | wait, doesn't docker compose do this?

Support Lando

Lando is and always will be FREE and OPEN SOURCE. As such it relies on generous contributions from its community to fund its development. Join our list of list of great sponsors! by contributing.

GitHub Sponsors | Patreon | OpenCollective

Documentation

Getting Started

Introduction | CLI Usage | Installation

Recipes

Backdrop | Drupal 6, 7, 8, 9, and 10 | Joomla | Lagoon | Laravel | LAMP | LEMP | MEAN | Pantheon | Platform.sh | WordPress

Services

Apache | Compose | dotnet | Elasticsearch | Go | MailHog | MariaDB | MySQL | MSSQL | nginx | Node | PHP | PhpMyAdmin | Postgres | Python | Redis | Ruby | Solr | Tomcat | Varnish

Advanced Configuration

Landofile | Recipes | Services & Build Steps | Tooling | Proxy & Nice Url Routing | Environment | Events & Automation | Experimental | Networking | Performance | Release Channels | SSH Keys | Global Config

Help, Troubleshooting & Support

Guides and Tutorials | Examples | Known Issues | Accessing Logs | GitHub Issue Queue | Slack Channel | YouTube Videos

Engage

Contribute to the Project | Join the Alliance | Events and Meetups | Blog | Follow on Twitter

Security Issues

If you have discovered a security issue with Lando, please contact the Lando Security Team directly at [email protected]. We manage security issues separately in a private repository until the issue has been resolved. Even if you're not sure if it's a security problem, please contact the security team before filing an issue, blogging, or tweeting about it.

Other Resources

core's People

Contributors

aaronfeledy avatar christopher-b avatar dependabot[bot] avatar github-actions[bot] avatar gitressa avatar janw-me avatar pirog avatar reynoldsalec avatar rtfm-47 avatar sjinks avatar soleneggd avatar zetnet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

core's Issues

Error "stty: 'standard input': Inappropriate ioctl for device" encountered in v3.20.2.

I am using an interactive shell in the Build Steps and Events below.

  • build_as_root
  • run_as_root
  • post-start
  • pre-destroy

In Lando up to v3.18.0, read and stty commands were executed without problems.
However, after upgrading to v3.20.2, the read command no longer works, and the following error occurs when executing the stty command.

stty: 'standard input': Inappropriate ioctl for device

Could you please fix this or provide an option to allow an interactive shell that can be configured in the .lando.yml file?

I would like to express my sincere respect to the development team.
Thank you so much.

Docker autostart does not work anymore

To fix this issue #105, I updated @lando/core with last version but now docker autostart no longer works.
When a run lando start, lando asks me to "Enter computer password for [user] to start docker". But when I type my password and press Enter, the question just shows up again as if I made a mistake in my password. But I'm sure the problem is not my password because I did not change it after the update, and I even try to change it in case I was wrong but still the same issue.

I don't know if this is linked but the appareance of the question to autostart Docker has changed.
Here is what I had before the update (when my password used to work) :
417833838_853323439892915_261596265678070364_n

Here is what I get now (when my password does not work) :
Capture d'écran 2024-02-21 110536

And sometimes when I type 1 character and press Enter, I have additional information appearing but it disappear when I type other characters.
Here is what I get :
Capture d'écran 2024-02-21 113438

I am on WSL with Ubuntu, without Docker Desktop but Docker and Docker compose installed manually. Everything worked before the update.

Updating from v3.20.8 to v3.21.0-beta.1 Failed during `lando update`

  • I had 3.20.8 and just upgraded to 3.21.0-beta.1 after the CLI encouraged me to upgrade.
  • My prior install was via the x64 DEB package and the update was as well. The upgrade installation from DEB worked.
  • I was able to run lando rebuild --yes in my project and it rebuilt successfully. However, I got this message:

    Your app is starting up but we have already detected some things you should investigate. These may or may not prevent your app from working.

    ℹ Updates available!
    Lando has detected 12 packages that can be updated.
    Updating fixes bugs, security issues and bring new features.
    Run lando update

  • The update failed, rendering Lando no longer functional. The output was:
$ lando update
Generating plugin/cli update matrix... done [see table below]

 PACKAGE              STATUS             COMMENT
 ──────────────────── ────────────────── ─────────────────────────────────────────────────────────
 @lando/acquia        ⚠ Update available https://github.com/lando/acquia/releases/tag/v1.1.0
 @lando/apache        ✔ Up to date       All good
 @lando/backdrop      ⚠ Update available https://github.com/lando/backdrop/releases/tag/v1.1.0
 @lando/cli           ⚠ Update available https://github.com/lando/cli/releases/tag/v3.21.0-beta.2
 @lando/compose       ✔ Up to date       All good
 @lando/core          ⚠ Update available https://github.com/lando/core/releases/tag/v3.21.0-beta.3
 @lando/dotnet        ✔ Up to date       All good
 @lando/drupal        ⚠ Update available https://github.com/lando/drupal/releases/tag/v1.1.0
 @lando/elasticsearch ✔ Up to date       All good
 @lando/go            ✔ Up to date       All good
 @lando/healthcheck   ⚠ Cannot update
 @lando/joomla        ⚠ Update available https://github.com/lando/joomla/releases/tag/v1.1.0
 @lando/lagoon        ✔ Up to date       All good
 @lando/lamp          ⚠ Update available https://github.com/lando/lamp/releases/tag/v1.1.0
 @lando/laravel       ⚠ Update available https://github.com/lando/laravel/releases/tag/v1.2.0
 @lando/lemp          ⚠ Update available https://github.com/lando/lemp/releases/tag/v1.1.0
 @lando/mailhog       ✔ Up to date       All good
 @lando/mariadb       ✔ Up to date       All good
 @lando/mean          ✔ Up to date       All good
 @lando/memcached     ⚠ Update available https://github.com/lando/memcached/releases/tag/v1.1.0
 @lando/mongo         ✔ Up to date       All good
 @lando/mssql         ✔ Up to date       All good
 @lando/mysql         ✔ Up to date       All good
 @lando/networking    ⚠ Cannot update
 @lando/nginx         ✔ Up to date       All good
 @lando/node          ✔ Up to date       All good
 @lando/pantheon      ✔ Up to date       All good
 @lando/php           ✔ Up to date       All good
 @lando/phpmyadmin    ✔ Up to date       All good
 @lando/platformsh    ⚠ Cannot update
 @lando/postgres      ⚠ Cannot update
 @lando/proxy         ⚠ Cannot update
 @lando/python        ✔ Up to date       All good
 @lando/redis         ✔ Up to date       All good
 @lando/ruby          ✔ Up to date       All good
 @lando/scanner       ⚠ Cannot update
 @lando/sharing       ⚠ Cannot update
 @lando/solr          ✔ Up to date       All good
 @lando/symfony       ⚠ Update available https://github.com/lando/symfony/releases/tag/v1.3.0
 @lando/tomcat        ✔ Up to date       All good
 @lando/varnish       ✔ Up to date       All good
 @lando/wordpress     ⚠ Update available https://github.com/lando/wordpress/releases/tag/v1.2.0

Lando would like to update 12 package(s) listed above.
DO YOU CONSENT?: yes, sir
DO YOU CONSENT?: yes
✔ Updated @lando/core to v3.21.0-beta.3
✔ Updated @lando/acquia to v1.1.0
✔ Updated @lando/backdrop to v1.1.0
✔ Updated @lando/drupal to v1.1.0
✔ Updated @lando/joomla to v1.1.0
✔ Updated @lando/lamp to v1.1.0
✔ Updated @lando/laravel to v1.2.0
✔ Updated @lando/lemp to v1.1.0
✔ Updated @lando/memcached to v1.1.0
✔ Updated @lando/symfony to v1.3.0
✔ Updated @lando/wordpress to v1.2.0
✖ Lando cannot write to /usr/share/lando/bin!
ERROR ==> An update error occured! Rerun with lando update --debug for more info.

Attempting to run any further Lando commands yields this error:

ERROR Error: Could not find a plugin in /home/MY_USERNAME/.lando/plugins/@lando/core/experimental/lando-experimental

If I run lando update --debug, I get:

  lando.js starting 'lando.js' version '3.21.0-beta.1' runtime selector... +0ms
  lando.js merged in additional config source from file '/snapshot/cli/config.yml' +22ms
  lando.js merged in additional config source from file '/home/MY_USERNAME/.lando/config.yml' +1ms
  lando.js merged in additional config source from 'LANDO_*' envvars with data {} +0ms
  lando.js final assembled minconf is {
  lando.js   configSources: [ '/snapshot/cli/config.yml', '/home/MY_USERNAME/.lando/config.yml' ],
  lando.js   envPrefix: 'LANDO',
  lando.js   landoFile: '.lando.yml',
  lando.js   preLandoFiles: [
  lando.js     '.lando.base.yml',
  lando.js     '.lando.dist.yml',
  lando.js     '.lando.recipe.yml',
  lando.js     '.lando.upstream.yml'
  lando.js   ],
  lando.js   postLandoFiles: [ '.lando.local.yml', '.lando.user.yml' ],
  lando.js   runtime: 3,
  lando.js   srcRoot: '/snapshot/cli',
  lando.js   userConfRoot: '/home/MY_USERNAME/.lando',
  lando.js   product: 'lando',
  lando.js   hyperdrive: 'hyperdrive',
  lando.js   channel: 'stable',
  lando.js   domain: 'lndo.site',
  lando.js   mode: 'cli',
  lando.js   stats: [ { report: true, url: 'https://metrics.lando.dev' } ],
  lando.js   appEnv: { LANDO_HOST_IP: 'host.docker.internal' },
  lando.js   experimental: true
  lando.js } +1ms
  lando.js detected an app 'MY_APP' at '/home/PATH/TO/MY/APP' +44ms
  lando.js using '@lando/core' runtime version 3 +0ms
  lando.js starting lando with 'v3' runtime using cli { ENVPREFIX: undefined, LOGLEVELCONSOLE: 4, USERCONFROOT: undefined, COREBASE: '/home/MY_USERNAME/.lando/plugins/@lando/core' } +37ms
  lando starting bootstrap at level APP...  +2ms
  lando config bootstrap beginning...  +4ms
  lando emitting event pre-bootstrap-config  +1ms
  lando plugin '@lando/core' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/index.js  +19ms
  lando plugin '@lando/healthcheck' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/healthcheck/index.js  +3ms
  lando plugin '@lando/networking' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/networking/index.js  +1ms
  lando plugin '@lando/proxy' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/proxy/index.js  +2ms
  lando plugin '@lando/scanner' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/scanner/index.js  +1ms
  lando plugin '@lando/sharing' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/sharing/index.js  +1ms
  lando plugin '@lando/acquia' loaded from /home/MY_USERNAME/.lando/plugins/@lando/acquia/index.js  +0ms
  lando plugin '@lando/apache' loaded from /snapshot/cli/node_modules/@lando/apache/index.js  +1ms
  lando plugin '@lando/backdrop' loaded from /home/MY_USERNAME/.lando/plugins/@lando/backdrop/index.js  +0ms
  lando plugin '@lando/compose' loaded from /snapshot/cli/node_modules/@lando/compose/index.js  +1ms
  lando plugin '@lando/dotnet' loaded from /snapshot/cli/node_modules/@lando/dotnet/index.js  +0ms
  lando plugin '@lando/drupal' loaded from /home/MY_USERNAME/.lando/plugins/@lando/drupal/index.js  +1ms
  lando plugin '@lando/elasticsearch' loaded from /snapshot/cli/node_modules/@lando/elasticsearch/index.js  +0ms
  lando plugin '@lando/go' loaded from /snapshot/cli/node_modules/@lando/go/index.js  +0ms
  lando plugin '@lando/joomla' loaded from /home/MY_USERNAME/.lando/plugins/@lando/joomla/index.js  +1ms
  lando plugin '@lando/lagoon' loaded from /snapshot/cli/node_modules/@lando/lagoon/index.js  +14ms
  lando plugin '@lando/lamp' loaded from /home/MY_USERNAME/.lando/plugins/@lando/lamp/index.js  +0ms
  lando plugin '@lando/laravel' loaded from /home/MY_USERNAME/.lando/plugins/@lando/laravel/index.js  +1ms
  lando plugin '@lando/lemp' loaded from /home/MY_USERNAME/.lando/plugins/@lando/lemp/index.js  +0ms
  lando plugin '@lando/mailhog' loaded from /snapshot/cli/node_modules/@lando/mailhog/index.js  +1ms
  lando plugin '@lando/mariadb' loaded from /snapshot/cli/node_modules/@lando/mariadb/index.js  +0ms
  lando plugin '@lando/mean' loaded from /snapshot/cli/node_modules/@lando/mean/index.js  +1ms
  lando plugin '@lando/memcached' loaded from /home/MY_USERNAME/.lando/plugins/@lando/memcached/index.js  +0ms
  lando plugin '@lando/mongo' loaded from /snapshot/cli/node_modules/@lando/mongo/index.js  +1ms
  lando plugin '@lando/mssql' loaded from /snapshot/cli/node_modules/@lando/mssql/index.js  +0ms
  lando plugin '@lando/mysql' loaded from /snapshot/cli/node_modules/@lando/mysql/index.js  +0ms
  lando plugin '@lando/nginx' loaded from /snapshot/cli/node_modules/@lando/nginx/index.js  +1ms
  lando plugin '@lando/node' loaded from /snapshot/cli/node_modules/@lando/node/index.js  +0ms
  lando plugin '@lando/pantheon' loaded from /snapshot/cli/node_modules/@lando/pantheon/index.js  +34ms
  lando plugin '@lando/php' loaded from /snapshot/cli/node_modules/@lando/php/index.js  +0ms
  lando plugin '@lando/phpmyadmin' loaded from /snapshot/cli/node_modules/@lando/phpmyadmin/index.js  +1ms
  lando plugin '@lando/platformsh' loaded from /snapshot/cli/node_modules/@lando/platformsh/index.js  +5ms
  lando plugin '@lando/postgres' loaded from /snapshot/cli/node_modules/@lando/postgres/index.js  +0ms
  lando plugin '@lando/python' loaded from /snapshot/cli/node_modules/@lando/python/index.js  +1ms
  lando plugin '@lando/redis' loaded from /snapshot/cli/node_modules/@lando/redis/index.js  +0ms
  lando plugin '@lando/ruby' loaded from /snapshot/cli/node_modules/@lando/ruby/index.js  +0ms
  lando plugin '@lando/solr' loaded from /snapshot/cli/node_modules/@lando/solr/index.js  +1ms
  lando plugin '@lando/symfony' loaded from /home/MY_USERNAME/.lando/plugins/@lando/symfony/index.js  +0ms
  lando plugin '@lando/tomcat' loaded from /snapshot/cli/node_modules/@lando/tomcat/index.js  +0ms
  lando plugin '@lando/varnish' loaded from /snapshot/cli/node_modules/@lando/varnish/index.js  +1ms
  lando plugin '@lando/wordpress' loaded from /home/MY_USERNAME/.lando/plugins/@lando/wordpress/index.js  +0ms
  lando plugin 'lando-experimental' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/experimental/lando-experimental/index.js  +0ms
  lando removed duplicate plugin entries %o name=@lando/core, path=/home/MY_USERNAME/.lando/plugins/@lando/core, type=local +2ms
  lando emitting event post-bootstrap-config  +2ms
  lando building proxy config...  +1ms
  lando config bootstrap completed.  +1ms
  lando tasks bootstrap beginning...  +1ms
  lando emitting event pre-bootstrap-tasks  +0ms
  lando autoloaded task config  +116ms
  lando autoloaded task destroy  +0ms
  lando autoloaded task info  +1ms
  lando autoloaded task init  +7ms
  lando autoloaded task list  +0ms
  lando autoloaded task logs  +1ms
  lando autoloaded task plugin-add  +0ms
  lando autoloaded task plugin-login  +1ms
  lando autoloaded task plugin-logout  +0ms
  lando autoloaded task plugin-remove  +0ms
  lando autoloaded task poweroff  +1ms
  lando autoloaded task rebuild  +0ms
  lando autoloaded task restart  +1ms
  lando autoloaded task setup  +3ms
  lando autoloaded task share  +0ms
  lando autoloaded task ssh  +1ms
  lando autoloaded task start  +0ms
  lando autoloaded task stop  +0ms
  lando autoloaded task update  +1ms
  lando autoloaded task version  +1ms
  lando emitting event post-bootstrap-tasks  +3ms
  lando tasks bootstrap completed.  +0ms
  lando engine bootstrap beginning...  +0ms
  lando emitting event pre-bootstrap-engine  +0ms
  lando automoved scripts from /home/MY_USERNAME/.lando/plugins/@lando/core/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +46ms
  lando automoved scripts from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/proxy/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +1ms
  lando automoved scripts from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/sharing/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +1ms
  lando automoved scripts from /home/MY_USERNAME/.lando/plugins/@lando/acquia/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +2ms
  lando automoved scripts from /home/MY_USERNAME/.lando/plugins/@lando/backdrop/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +1ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/lagoon/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +29ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/nginx/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +3ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/pantheon/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +17ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/php/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +3ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/platformsh/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +17ms
  lando emitting event post-bootstrap-engine  +2ms
  lando engine bootstrap completed.  +0ms
  lando app bootstrap beginning...  +0ms
  lando emitting event pre-bootstrap-app  +0ms
  lando autoloaded legacy builder _platformsh_appserver  +19ms
  lando autoloaded legacy builder _platformsh_service  +0ms
  lando autoloaded legacy builder platformsh-chrome-headless  +0ms
  lando autoloaded legacy builder platformsh-elasticsearch  +0ms
  lando autoloaded legacy builder platformsh-influxdb  +0ms
  lando autoloaded legacy builder platformsh-kafka  +1ms
  lando autoloaded legacy builder platformsh-mariadb  +0ms
  lando autoloaded legacy builder platformsh-memcached  +0ms
  lando autoloaded legacy builder platformsh-mongodb  +0ms
  lando autoloaded legacy builder platformsh-mysql  +0ms
  lando autoloaded legacy builder platformsh-php  +0ms
  lando autoloaded legacy builder platformsh-postgresql  +0ms
  lando autoloaded legacy builder platformsh-rabbitmq  +1ms
  lando autoloaded legacy builder platformsh-redis  +0ms
  lando autoloaded legacy builder platformsh-solr  +0ms
  lando autoloaded legacy builder platformsh-varnish  +0ms
  lando autoloaded legacy builder pantheon  +0ms
  lando autoloaded legacy builder platformsh  +0ms
  lando autodiscovered legacy api 3 builder _appserver  +7ms
  lando autodiscovered legacy api 3 builder _casetup  +0ms
  lando autodiscovered legacy api 3 builder _init  +0ms
  lando autodiscovered legacy api 3 builder _lando  +0ms
  lando autodiscovered legacy api 3 builder _landoutil  +0ms
  lando autodiscovered legacy api 4 builder _service  +0ms
  lando autodiscovered legacy api 3 builder _service  +1ms
  lando autodiscovered legacy api 3 builder _webserver  +0ms
  lando autodiscovered legacy api 4 builder lando  +0ms
  lando autodiscovered legacy api 3 builder lando  +0ms
  lando autodiscovered legacy api 3 builder _proxy  +0ms
  lando autodiscovered legacy api 3 builder _mounter  +0ms
  lando autodiscovered legacy api 3 builder acquia-base  +0ms
  lando autodiscovered legacy api 3 builder acquia-mailhog  +1ms
  lando autodiscovered legacy api 3 builder acquia-mariadb  +0ms
  lando autodiscovered legacy api 3 builder acquia-memcached  +0ms
  lando autodiscovered legacy api 3 builder acquia-mysql  +0ms
  lando autodiscovered legacy api 3 builder acquia-php  +0ms
  lando autodiscovered legacy api 3 builder acquia-postgres  +0ms
  lando autodiscovered legacy api 3 builder acquia  +0ms
  lando autodiscovered legacy api 3 builder apache  +0ms
  lando autodiscovered legacy api 3 builder backdrop-mariadb  +0ms
  lando autodiscovered legacy api 3 builder backdrop-mssql  +0ms
  lando autodiscovered legacy api 3 builder backdrop-mysql  +1ms
  lando autodiscovered legacy api 3 builder backdrop-nginx  +0ms
  lando autodiscovered legacy api 3 builder backdrop-php  +0ms
  lando autodiscovered legacy api 3 builder backdrop-postgres  +0ms
  lando autodiscovered legacy api 3 builder backdrop  +0ms
  lando autodiscovered legacy api 3 builder compose  +0ms
  lando autodiscovered legacy api 3 builder dotnet  +0ms
  lando autodiscovered legacy api 3 builder _drupaly  +0ms
  lando autodiscovered legacy api 3 builder drupal-mariadb  +1ms
  lando autodiscovered legacy api 3 builder drupal-mssql  +0ms
  lando autodiscovered legacy api 3 builder drupal-mysql  +0ms
  lando autodiscovered legacy api 3 builder drupal-nginx  +0ms
  lando autodiscovered legacy api 3 builder drupal-php  +0ms
  lando autodiscovered legacy api 3 builder drupal-postgres  +0ms
  lando autodiscovered legacy api 3 builder drupal10  +1ms
  lando autodiscovered legacy api 3 builder drupal6  +0ms
  lando autodiscovered legacy api 3 builder drupal7  +0ms
  lando autodiscovered legacy api 3 builder drupal8  +0ms
  lando autodiscovered legacy api 3 builder drupal9  +0ms
  lando autodiscovered legacy api 3 builder elasticsearch  +1ms
  lando autodiscovered legacy api 3 builder go  +0ms
  lando autodiscovered legacy api 3 builder joomla-mariadb  +0ms
  lando autodiscovered legacy api 3 builder joomla-mssql  +0ms
  lando autodiscovered legacy api 3 builder joomla-mysql  +0ms
  lando autodiscovered legacy api 3 builder joomla-nginx  +0ms
  lando autodiscovered legacy api 3 builder joomla-php  +1ms
  lando autodiscovered legacy api 3 builder joomla-postgres  +0ms
  lando autodiscovered legacy api 3 builder joomla  +0ms
  lando autodiscovered legacy api 3 builder _lagoon  +0ms
  lando autodiscovered legacy api 3 builder lagoon-basic  +0ms
  lando autodiscovered legacy api 3 builder lagoon-elasticsearch  +1ms
  lando autodiscovered legacy api 3 builder lagoon-mailhog  +0ms
  lando autodiscovered legacy api 3 builder lagoon-mariadb  +0ms
  lando autodiscovered legacy api 3 builder lagoon-nginx  +0ms
  lando autodiscovered legacy api 3 builder lagoon-node  +0ms
  lando autodiscovered legacy api 3 builder lagoon-none  +0ms
  lando autodiscovered legacy api 3 builder lagoon-php-cli  +1ms
  lando autodiscovered legacy api 3 builder lagoon-php  +0ms
  lando autodiscovered legacy api 3 builder lagoon-postgresql  +0ms
  lando autodiscovered legacy api 3 builder lagoon-python  +0ms
  lando autodiscovered legacy api 3 builder lagoon-redis  +0ms
  lando autodiscovered legacy api 3 builder lagoon-ruby  +1ms
  lando autodiscovered legacy api 3 builder lagoon-solr  +0ms
  lando autodiscovered legacy api 3 builder lagoon-varnish  +0ms
  lando autodiscovered legacy api 3 builder lagoon  +0ms
  lando autodiscovered legacy api 3 builder lamp-mariadb  +0ms
  lando autodiscovered legacy api 3 builder lamp-mongo  +1ms
  lando autodiscovered legacy api 3 builder lamp-mssql  +0ms
  lando autodiscovered legacy api 3 builder lamp-mysql  +1ms
  lando autodiscovered legacy api 3 builder lamp-nginx  +0ms
  lando autodiscovered legacy api 3 builder lamp-php  +0ms
  lando autodiscovered legacy api 3 builder lamp-postgres  +0ms
  lando autodiscovered legacy api 3 builder lamp  +0ms
  lando autodiscovered legacy api 3 builder laravel-mariadb  +0ms
  lando autodiscovered legacy api 3 builder laravel-memcached  +1ms
  lando autodiscovered legacy api 3 builder laravel-mssql  +0ms
  lando autodiscovered legacy api 3 builder laravel-mysql  +0ms
  lando autodiscovered legacy api 3 builder laravel-nginx  +0ms
  lando autodiscovered legacy api 3 builder laravel-php  +0ms
  lando autodiscovered legacy api 3 builder laravel-postgres  +0ms
  lando autodiscovered legacy api 3 builder laravel-redis  +1ms
  lando autodiscovered legacy api 3 builder laravel  +0ms
  lando autodiscovered legacy api 3 builder lemp-mariadb  +0ms
  lando autodiscovered legacy api 3 builder lemp-mongo  +0ms
  lando autodiscovered legacy api 3 builder lemp-mssql  +0ms
  lando autodiscovered legacy api 3 builder lemp-mysql  +0ms
  lando autodiscovered legacy api 3 builder lemp-nginx  +0ms
  lando autodiscovered legacy api 3 builder lemp-php  +1ms
  lando autodiscovered legacy api 3 builder lemp-postgres  +0ms
  lando autodiscovered legacy api 3 builder lemp  +0ms
  lando autodiscovered legacy api 3 builder mailhog  +0ms
  lando autodiscovered legacy api 3 builder mariadb  +0ms
  lando autodiscovered legacy api 3 builder mean-mariadb  +0ms
  lando autodiscovered legacy api 3 builder mean-mongo  +0ms
  lando autodiscovered legacy api 3 builder mean-mysql  +1ms
  lando autodiscovered legacy api 3 builder mean-node  +0ms
  lando autodiscovered legacy api 3 builder mean-postgres  +0ms
  lando autodiscovered legacy api 3 builder mean  +0ms
  lando autodiscovered legacy api 3 builder memcached  +0ms
  lando autodiscovered legacy api 3 builder mongo  +0ms
  lando autodiscovered legacy api 3 builder mssql  +0ms
  lando autodiscovered legacy api 3 builder mysql  +0ms
  lando autodiscovered legacy api 3 builder nginx  +0ms
  lando autodiscovered legacy api 3 builder node  +1ms
  lando autodiscovered legacy api 3 builder pantheon-mariadb-arm  +0ms
  lando autodiscovered legacy api 3 builder pantheon-mariadb  +0ms
  lando autodiscovered legacy api 3 builder pantheon-nginx  +0ms
  lando autodiscovered legacy api 3 builder pantheon-php  +0ms
  lando autodiscovered legacy api 3 builder pantheon-redis  +0ms
  lando autodiscovered legacy api 3 builder pantheon-solr  +0ms
  lando autodiscovered legacy api 3 builder pantheon-varnish  +1ms
  lando autodiscovered legacy api 3 builder php-nginx  +0ms
  lando autodiscovered legacy api 3 builder php  +0ms
  lando autodiscovered legacy api 3 builder phpmyadmin  +0ms
  lando autodiscovered legacy api 3 builder postgres  +0ms
  lando autodiscovered legacy api 3 builder python  +0ms
  lando autodiscovered legacy api 3 builder redis  +0ms
  lando autodiscovered legacy api 3 builder ruby  +0ms
  lando autodiscovered legacy api 3 builder solr  +1ms
  lando autodiscovered legacy api 3 builder symfony-mariadb  +0ms
  lando autodiscovered legacy api 3 builder symfony-memcached  +0ms
  lando autodiscovered legacy api 3 builder symfony-mssql  +0ms
  lando autodiscovered legacy api 3 builder symfony-mysql  +0ms
  lando autodiscovered legacy api 3 builder symfony-nginx  +0ms
  lando autodiscovered legacy api 3 builder symfony-php  +0ms
  lando autodiscovered legacy api 3 builder symfony-postgres  +0ms
  lando autodiscovered legacy api 3 builder symfony-redis  +0ms
  lando autodiscovered legacy api 3 builder symfony  +0ms
  lando autodiscovered legacy api 3 builder tomcat  +1ms
  lando autodiscovered legacy api 3 builder varnish-nginx  +0ms
  lando autodiscovered legacy api 3 builder varnish  +0ms
  lando autodiscovered legacy api 3 builder wordpress-mariadb  +0ms
  lando autodiscovered legacy api 3 builder wordpress-mssql  +0ms
  lando autodiscovered legacy api 3 builder wordpress-mysql  +1ms
  lando autodiscovered legacy api 3 builder wordpress-nginx  +0ms
  lando autodiscovered legacy api 3 builder wordpress-php  +0ms
  lando autodiscovered legacy api 3 builder wordpress-postgres  +0ms
  lando autodiscovered legacy api 3 builder wordpress  +0ms
  lando emitting event post-bootstrap-app  +1ms
  lando app bootstrap completed.  +11ms
  lando bootstrap completed.  +0ms
  lando emitting event post-bootstrap  +0ms
  lando emitting event almost-ready  +1ms
  lando using docker-compose /usr/bin/docker-compose  +1ms
  lando emitting event ready  +22ms
  lando loading app MY_APP from config files 0=/home/PATH/TO/MY/APP.lando.yml +7ms
  lando app MY_APP has config REDACTED +1ms
  MY_APP initiatilizing app at /home/PATH/TO/MY/APP...  +4ms
  lando plugin '@lando/core' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/app.js  +13ms
  lando plugin '@lando/healthcheck' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/healthcheck/app.js  +1ms
  lando plugin '@lando/networking' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/networking/app.js  +1ms
  MY_APP proxy settings detected.  +7ms
  lando plugin '@lando/proxy' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/proxy/app.js  +3ms
  lando plugin '@lando/scanner' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/scanner/app.js  +1ms
  lando plugin '@lando/sharing' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/sharing/app.js  +1ms
  lando plugin '@lando/acquia' loaded from /home/MY_USERNAME/.lando/plugins/@lando/acquia/app.js  +1ms
  lando plugin '@lando/lagoon' loaded from /snapshot/cli/node_modules/@lando/lagoon/app.js  +1ms
  lando plugin '@lando/pantheon' loaded from /snapshot/cli/node_modules/@lando/pantheon/app.js  +3ms
  lando plugin '@lando/platformsh' loaded from /snapshot/cli/node_modules/@lando/platformsh/app.js  +27ms
  MY_APP emitting event pre-init  +34ms
  MY_APP building pantheon recipe named  +2ms
  MY_APP building v3 pantheon-php service appserver  +47ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/pantheon/node_modules/@lando/php/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +69ms
  MY_APP building v3 pantheon-mariadb service database  +76ms
  MY_APP building v3 pantheon-redis service cache  +11ms
  MY_APP building v3 pantheon-varnish service edge  +9ms
  MY_APP building v3 pantheon-solr service index  +40ms
  MY_APP building v3 compose service testserver  +13ms
  MY_APP emitting event pre-services-generate  +11ms
  lando checking docker version compatibility...  +144ms
  lando compatibility results name=compose, link=https://docs.docker.com/compose/install/#install-compose-on-linux-systems, satisfied=true, wants=1.x.x || 2.x.x, dockerVersion=true, version=2.24.5, name=engine, link=https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script, satisfied=true, wants=>=18 <26, dockerVersion=true, version=24.0.6 +0ms
  lando proxy is ON.  +2ms
  lando Setting the default proxy certificate /certs/cert.crt  +0ms
  MY_APP emitting event post-init  +9ms
  MY_APP adding hostnames to the app...  +1ms
  MY_APP hostnames added to appserver_nginx 0=appserver_nginx.MY_APP.internal +0ms
  MY_APP hostnames added to appserver 0=appserver.MY_APP.internal +1ms
  MY_APP hostnames added to database 0=database.MY_APP.internal +0ms
  MY_APP hostnames added to cache 0=cache.MY_APP.internal +0ms
  MY_APP hostnames added to edge_ssl 0=edge_ssl.MY_APP.internal +0ms
  MY_APP hostnames added to edge 0=edge.MY_APP.internal +0ms
  MY_APP hostnames added to index 0=index.MY_APP.internal +0ms
  MY_APP hostnames added to testserver 0=testserver.MY_APP.internal +1ms
  MY_APP going to build v3 services if applicable 0=appserver, 1=database, 2=cache, 3=edge, 4=index, 5=testserver, 6=appserver_nginx, 7=edge_ssl +1ms
  MY_APP attempting to find open services...  +2ms
  lando build-engine exists: true  +10ms
  lando orchestrator exists: true  +0ms
  lando emitting event engine-autostart  +1ms
  lando engine is up.  +128ms
  MY_APP refreshing certificates... 0=appserver_nginx, 1=appserver, 2=database, 3=cache, 4=edge_ssl, 5=edge, 6=index, 7=testserver +150ms
  MY_APP perm sweeping flagged non-root containers ... 0=database +1ms
  MY_APP analyzing user ssh keys... using 2 of 2  +1ms
  MY_APP key config...  none  +1ms
  MY_APP additional tooling detected  +0ms
  MY_APP adding app cli task terminus  +2ms
  MY_APP adding app cli task redis-cli  +0ms
  MY_APP adding app cli task varnishadm  +1ms
  MY_APP adding app cli task pull  +0ms
  MY_APP adding app cli task push  +0ms
  MY_APP adding app cli task switch  +0ms
  MY_APP adding app cli task mysql  +0ms
  MY_APP adding app cli task php  +0ms
  MY_APP adding app cli task composer  +1ms
  MY_APP adding app cli task db-export [file]  +0ms
  MY_APP adding app cli task db-import <file>  +0ms
  MY_APP adding app cli task drush  +0ms
  MY_APP adding app cli task custom-test  +0ms
  MY_APP adding app cli task functional-test  +0ms
  MY_APP adding app cli task unit-test  +1ms
  MY_APP setting LANDO_INFO...  +2ms
  MY_APP ensuring exposed ports on appserver_nginx are bound to 127.0.0.1  +1ms
  MY_APP ensuring exposed ports on appserver_nginx are bound to 127.0.0.1  +0ms
  MY_APP ensuring exposed ports on database are bound to 127.0.0.1  +0ms
  MY_APP ensuring exposed ports on cache are bound to 127.0.0.1  +1ms
  MY_APP ensuring exposed ports on edge_ssl are bound to 127.0.0.1  +0ms
  MY_APP ensuring exposed ports on edge are bound to 127.0.0.1  +0ms
  MY_APP ensuring exposed ports on index are bound to 127.0.0.1  +0ms
  MY_APP app is ready!  +21ms
  MY_APP emitting event ready  +0ms
  MY_APP discovering dynamic portforward info...  +2ms
  lando emitting event engine-autostart  +56ms
  MY_APP v4 app is ready!  +24ms
  MY_APP emitting event ready-v4  +0ms
  lando starting bootstrap at level app...  +1ms
  lando config bootstrap beginning...  +1ms
  lando emitting event pre-bootstrap-config  +1ms
  lando plugin '@lando/core' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/index.js  +9ms
  lando plugin '@lando/healthcheck' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/healthcheck/index.js  +2ms
  lando plugin '@lando/networking' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/networking/index.js  +0ms
  lando plugin '@lando/proxy' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/proxy/index.js  +1ms
  lando plugin '@lando/scanner' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/scanner/index.js  +1ms
  lando plugin '@lando/sharing' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/sharing/index.js  +0ms
  lando plugin '@lando/acquia' loaded from /home/MY_USERNAME/.lando/plugins/@lando/acquia/index.js  +0ms
  lando plugin '@lando/apache' loaded from /snapshot/cli/node_modules/@lando/apache/index.js  +0ms
  lando plugin '@lando/backdrop' loaded from /home/MY_USERNAME/.lando/plugins/@lando/backdrop/index.js  +0ms
  lando plugin '@lando/compose' loaded from /snapshot/cli/node_modules/@lando/compose/index.js  +0ms
  lando plugin '@lando/dotnet' loaded from /snapshot/cli/node_modules/@lando/dotnet/index.js  +1ms
  lando plugin '@lando/drupal' loaded from /home/MY_USERNAME/.lando/plugins/@lando/drupal/index.js  +0ms
  lando plugin '@lando/elasticsearch' loaded from /snapshot/cli/node_modules/@lando/elasticsearch/index.js  +0ms
  lando plugin '@lando/go' loaded from /snapshot/cli/node_modules/@lando/go/index.js  +0ms
  lando plugin '@lando/joomla' loaded from /home/MY_USERNAME/.lando/plugins/@lando/joomla/index.js  +0ms
  lando plugin '@lando/lagoon' loaded from /snapshot/cli/node_modules/@lando/lagoon/index.js  +0ms
  lando plugin '@lando/lamp' loaded from /home/MY_USERNAME/.lando/plugins/@lando/lamp/index.js  +0ms
  lando plugin '@lando/laravel' loaded from /home/MY_USERNAME/.lando/plugins/@lando/laravel/index.js  +1ms
  lando plugin '@lando/lemp' loaded from /home/MY_USERNAME/.lando/plugins/@lando/lemp/index.js  +0ms
  lando plugin '@lando/mailhog' loaded from /snapshot/cli/node_modules/@lando/mailhog/index.js  +0ms
  lando plugin '@lando/mariadb' loaded from /snapshot/cli/node_modules/@lando/mariadb/index.js  +0ms
  lando plugin '@lando/mean' loaded from /snapshot/cli/node_modules/@lando/mean/index.js  +0ms
  lando plugin '@lando/memcached' loaded from /home/MY_USERNAME/.lando/plugins/@lando/memcached/index.js  +1ms
  lando plugin '@lando/mongo' loaded from /snapshot/cli/node_modules/@lando/mongo/index.js  +0ms
  lando plugin '@lando/mssql' loaded from /snapshot/cli/node_modules/@lando/mssql/index.js  +0ms
  lando plugin '@lando/mysql' loaded from /snapshot/cli/node_modules/@lando/mysql/index.js  +0ms
  lando plugin '@lando/nginx' loaded from /snapshot/cli/node_modules/@lando/nginx/index.js  +0ms
  lando plugin '@lando/node' loaded from /snapshot/cli/node_modules/@lando/node/index.js  +1ms
  lando plugin '@lando/pantheon' loaded from /snapshot/cli/node_modules/@lando/pantheon/index.js  +0ms
  lando plugin '@lando/php' loaded from /snapshot/cli/node_modules/@lando/php/index.js  +0ms
  lando plugin '@lando/phpmyadmin' loaded from /snapshot/cli/node_modules/@lando/phpmyadmin/index.js  +0ms
  lando plugin '@lando/platformsh' loaded from /snapshot/cli/node_modules/@lando/platformsh/index.js  +0ms
  lando plugin '@lando/postgres' loaded from /snapshot/cli/node_modules/@lando/postgres/index.js  +0ms
  lando plugin '@lando/python' loaded from /snapshot/cli/node_modules/@lando/python/index.js  +1ms
  lando plugin '@lando/redis' loaded from /snapshot/cli/node_modules/@lando/redis/index.js  +0ms
  lando plugin '@lando/ruby' loaded from /snapshot/cli/node_modules/@lando/ruby/index.js  +0ms
  lando plugin '@lando/solr' loaded from /snapshot/cli/node_modules/@lando/solr/index.js  +0ms
  lando plugin '@lando/symfony' loaded from /home/MY_USERNAME/.lando/plugins/@lando/symfony/index.js  +0ms
  lando plugin '@lando/tomcat' loaded from /snapshot/cli/node_modules/@lando/tomcat/index.js  +0ms
  lando plugin '@lando/varnish' loaded from /snapshot/cli/node_modules/@lando/varnish/index.js  +1ms
  lando plugin '@lando/wordpress' loaded from /home/MY_USERNAME/.lando/plugins/@lando/wordpress/index.js  +0ms
  lando plugin 'lando-experimental' loaded from /home/MY_USERNAME/.lando/plugins/@lando/core/experimental/lando-experimental/index.js  +0ms
  lando removed duplicate plugin entries %o name=@lando/core, path=/home/MY_USERNAME/.lando/plugins/@lando/core, type=local +1ms
  lando emitting event post-bootstrap-config  +3ms
  lando building proxy config...  +0ms
  lando config bootstrap completed.  +0ms
  lando tasks bootstrap beginning...  +1ms
  lando emitting event pre-bootstrap-tasks  +0ms
  lando autoloaded task config  +7ms
  lando autoloaded task destroy  +1ms
  lando autoloaded task info  +0ms
  lando autoloaded task init  +4ms
  lando autoloaded task list  +0ms
  lando autoloaded task logs  +0ms
  lando autoloaded task plugin-add  +1ms
  lando autoloaded task plugin-login  +0ms
  lando autoloaded task plugin-logout  +0ms
  lando autoloaded task plugin-remove  +0ms
  lando autoloaded task poweroff  +0ms
  lando autoloaded task rebuild  +0ms
  lando autoloaded task restart  +0ms
  lando autoloaded task setup  +1ms
  lando autoloaded task share  +0ms
  lando autoloaded task ssh  +0ms
  lando autoloaded task start  +0ms
  lando autoloaded task stop  +0ms
  lando autoloaded task update  +0ms
  lando autoloaded task version  +0ms
  lando emitting event post-bootstrap-tasks  +2ms
  lando tasks bootstrap completed.  +0ms
  lando engine bootstrap beginning...  +0ms
  lando emitting event pre-bootstrap-engine  +0ms
  lando automoved scripts from /home/MY_USERNAME/.lando/plugins/@lando/core/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +4ms
  lando automoved scripts from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/proxy/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +2ms
  lando automoved scripts from /home/MY_USERNAME/.lando/plugins/@lando/core/plugins/sharing/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +1ms
  lando automoved scripts from /home/MY_USERNAME/.lando/plugins/@lando/acquia/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +1ms
  lando automoved scripts from /home/MY_USERNAME/.lando/plugins/@lando/backdrop/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +2ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/lagoon/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +18ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/nginx/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +5ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/pantheon/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +15ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/php/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +4ms
  lando automoved scripts from /snapshot/cli/node_modules/@lando/platformsh/scripts to /home/MY_USERNAME/.lando/scripts and set to mode 755  +23ms
  lando emitting event post-bootstrap-engine  +1ms
  lando engine bootstrap completed.  +1ms
  lando app bootstrap beginning...  +0ms
  lando emitting event pre-bootstrap-app  +0ms
  lando autoloaded legacy builder _platformsh_appserver  +9ms
  lando autoloaded legacy builder _platformsh_service  +0ms
  lando autoloaded legacy builder platformsh-chrome-headless  +0ms
  lando autoloaded legacy builder platformsh-elasticsearch  +0ms
  lando autoloaded legacy builder platformsh-influxdb  +0ms
  lando autoloaded legacy builder platformsh-kafka  +0ms
  lando autoloaded legacy builder platformsh-mariadb  +0ms
  lando autoloaded legacy builder platformsh-memcached  +1ms
  lando autoloaded legacy builder platformsh-mongodb  +0ms
  lando autoloaded legacy builder platformsh-mysql  +0ms
  lando autoloaded legacy builder platformsh-php  +0ms
  lando autoloaded legacy builder platformsh-postgresql  +0ms
  lando autoloaded legacy builder platformsh-rabbitmq  +0ms
  lando autoloaded legacy builder platformsh-redis  +0ms
  lando autoloaded legacy builder platformsh-solr  +0ms
  lando autoloaded legacy builder platformsh-varnish  +0ms
  lando autoloaded legacy builder pantheon  +0ms
  lando autoloaded legacy builder platformsh  +1ms
  lando autodiscovered legacy api 3 builder _appserver  +3ms
  lando autodiscovered legacy api 3 builder _casetup  +0ms
  lando autodiscovered legacy api 3 builder _init  +1ms
  lando autodiscovered legacy api 3 builder _lando  +0ms
  lando autodiscovered legacy api 3 builder _landoutil  +0ms
  lando autodiscovered legacy api 4 builder _service  +0ms
  lando autodiscovered legacy api 3 builder _service  +0ms
  lando autodiscovered legacy api 3 builder _webserver  +0ms
  lando autodiscovered legacy api 4 builder lando  +0ms
  lando autodiscovered legacy api 3 builder lando  +0ms
  lando autodiscovered legacy api 3 builder _proxy  +1ms
  lando autodiscovered legacy api 3 builder _mounter  +0ms
  lando autodiscovered legacy api 3 builder acquia-base  +0ms
  lando autodiscovered legacy api 3 builder acquia-mailhog  +0ms
  lando autodiscovered legacy api 3 builder acquia-mariadb  +0ms
  lando autodiscovered legacy api 3 builder acquia-memcached  +0ms
  lando autodiscovered legacy api 3 builder acquia-mysql  +1ms
  lando autodiscovered legacy api 3 builder acquia-php  +0ms
  lando autodiscovered legacy api 3 builder acquia-postgres  +0ms
  lando autodiscovered legacy api 3 builder acquia  +0ms
  lando autodiscovered legacy api 3 builder apache  +0ms
  lando autodiscovered legacy api 3 builder backdrop-mariadb  +0ms
  lando autodiscovered legacy api 3 builder backdrop-mssql  +0ms
  lando autodiscovered legacy api 3 builder backdrop-mysql  +0ms
  lando autodiscovered legacy api 3 builder backdrop-nginx  +0ms
  lando autodiscovered legacy api 3 builder backdrop-php  +1ms
  lando autodiscovered legacy api 3 builder backdrop-postgres  +0ms
  lando autodiscovered legacy api 3 builder backdrop  +0ms
  lando autodiscovered legacy api 3 builder compose  +0ms
  lando autodiscovered legacy api 3 builder dotnet  +0ms
  lando autodiscovered legacy api 3 builder _drupaly  +0ms
  lando autodiscovered legacy api 3 builder drupal-mariadb  +0ms
  lando autodiscovered legacy api 3 builder drupal-mssql  +0ms
  lando autodiscovered legacy api 3 builder drupal-mysql  +1ms
  lando autodiscovered legacy api 3 builder drupal-nginx  +0ms
  lando autodiscovered legacy api 3 builder drupal-php  +0ms
  lando autodiscovered legacy api 3 builder drupal-postgres  +0ms
  lando autodiscovered legacy api 3 builder drupal10  +0ms
  lando autodiscovered legacy api 3 builder drupal6  +0ms
  lando autodiscovered legacy api 3 builder drupal7  +0ms
  lando autodiscovered legacy api 3 builder drupal8  +0ms
  lando autodiscovered legacy api 3 builder drupal9  +1ms
  lando autodiscovered legacy api 3 builder elasticsearch  +0ms
  lando autodiscovered legacy api 3 builder go  +0ms
  lando autodiscovered legacy api 3 builder joomla-mariadb  +0ms
  lando autodiscovered legacy api 3 builder joomla-mssql  +1ms
  lando autodiscovered legacy api 3 builder joomla-mysql  +0ms
  lando autodiscovered legacy api 3 builder joomla-nginx  +0ms
  lando autodiscovered legacy api 3 builder joomla-php  +0ms
  lando autodiscovered legacy api 3 builder joomla-postgres  +0ms
  lando autodiscovered legacy api 3 builder joomla  +1ms
  lando autodiscovered legacy api 3 builder _lagoon  +0ms
  lando autodiscovered legacy api 3 builder lagoon-basic  +0ms
  lando autodiscovered legacy api 3 builder lagoon-elasticsearch  +0ms
  lando autodiscovered legacy api 3 builder lagoon-mailhog  +0ms
  lando autodiscovered legacy api 3 builder lagoon-mariadb  +1ms
  lando autodiscovered legacy api 3 builder lagoon-nginx  +0ms
  lando autodiscovered legacy api 3 builder lagoon-node  +0ms
  lando autodiscovered legacy api 3 builder lagoon-none  +0ms
  lando autodiscovered legacy api 3 builder lagoon-php-cli  +0ms
  lando autodiscovered legacy api 3 builder lagoon-php  +0ms
  lando autodiscovered legacy api 3 builder lagoon-postgresql  +1ms
  lando autodiscovered legacy api 3 builder lagoon-python  +0ms
  lando autodiscovered legacy api 3 builder lagoon-redis  +0ms
  lando autodiscovered legacy api 3 builder lagoon-ruby  +0ms
  lando autodiscovered legacy api 3 builder lagoon-solr  +0ms
  lando autodiscovered legacy api 3 builder lagoon-varnish  +0ms
  lando autodiscovered legacy api 3 builder lagoon  +1ms
  lando autodiscovered legacy api 3 builder lamp-mariadb  +0ms
  lando autodiscovered legacy api 3 builder lamp-mongo  +0ms
  lando autodiscovered legacy api 3 builder lamp-mssql  +0ms
  lando autodiscovered legacy api 3 builder lamp-mysql  +0ms
  lando autodiscovered legacy api 3 builder lamp-nginx  +0ms
  lando autodiscovered legacy api 3 builder lamp-php  +0ms
  lando autodiscovered legacy api 3 builder lamp-postgres  +0ms
  lando autodiscovered legacy api 3 builder lamp  +1ms
  lando autodiscovered legacy api 3 builder laravel-mariadb  +0ms
  lando autodiscovered legacy api 3 builder laravel-memcached  +0ms
  lando autodiscovered legacy api 3 builder laravel-mssql  +0ms
  lando autodiscovered legacy api 3 builder laravel-mysql  +0ms
  lando autodiscovered legacy api 3 builder laravel-nginx  +1ms
  lando autodiscovered legacy api 3 builder laravel-php  +0ms
  lando autodiscovered legacy api 3 builder laravel-postgres  +0ms
  lando autodiscovered legacy api 3 builder laravel-redis  +0ms
  lando autodiscovered legacy api 3 builder laravel  +0ms
  lando autodiscovered legacy api 3 builder lemp-mariadb  +0ms
  lando autodiscovered legacy api 3 builder lemp-mongo  +0ms
  lando autodiscovered legacy api 3 builder lemp-mssql  +0ms
  lando autodiscovered legacy api 3 builder lemp-mysql  +1ms
  lando autodiscovered legacy api 3 builder lemp-nginx  +0ms
  lando autodiscovered legacy api 3 builder lemp-php  +0ms
  lando autodiscovered legacy api 3 builder lemp-postgres  +0ms
  lando autodiscovered legacy api 3 builder lemp  +0ms
  lando autodiscovered legacy api 3 builder mailhog  +0ms
  lando autodiscovered legacy api 3 builder mariadb  +0ms
  lando autodiscovered legacy api 3 builder mean-mariadb  +0ms
  lando autodiscovered legacy api 3 builder mean-mongo  +0ms
  lando autodiscovered legacy api 3 builder mean-mysql  +1ms
  lando autodiscovered legacy api 3 builder mean-node  +0ms
  lando autodiscovered legacy api 3 builder mean-postgres  +0ms
  lando autodiscovered legacy api 3 builder mean  +0ms
  lando autodiscovered legacy api 3 builder memcached  +0ms
  lando autodiscovered legacy api 3 builder mongo  +0ms
  lando autodiscovered legacy api 3 builder mssql  +0ms
  lando autodiscovered legacy api 3 builder mysql  +0ms
  lando autodiscovered legacy api 3 builder nginx  +0ms
  lando autodiscovered legacy api 3 builder node  +1ms
  lando autodiscovered legacy api 3 builder pantheon-mariadb-arm  +0ms
  lando autodiscovered legacy api 3 builder pantheon-mariadb  +0ms
  lando autodiscovered legacy api 3 builder pantheon-nginx  +0ms
  lando autodiscovered legacy api 3 builder pantheon-php  +0ms
  lando autodiscovered legacy api 3 builder pantheon-redis  +0ms
  lando autodiscovered legacy api 3 builder pantheon-solr  +0ms
  lando autodiscovered legacy api 3 builder pantheon-varnish  +0ms
  lando autodiscovered legacy api 3 builder php-nginx  +0ms
  lando autodiscovered legacy api 3 builder php  +1ms
  lando autodiscovered legacy api 3 builder phpmyadmin  +0ms
  lando autodiscovered legacy api 3 builder postgres  +0ms
  lando autodiscovered legacy api 3 builder python  +0ms
  lando autodiscovered legacy api 3 builder redis  +0ms
  lando autodiscovered legacy api 3 builder ruby  +0ms
  lando autodiscovered legacy api 3 builder solr  +0ms
  lando autodiscovered legacy api 3 builder symfony-mariadb  +0ms
  lando autodiscovered legacy api 3 builder symfony-memcached  +1ms
  lando autodiscovered legacy api 3 builder symfony-mssql  +0ms
  lando autodiscovered legacy api 3 builder symfony-mysql  +0ms
  lando autodiscovered legacy api 3 builder symfony-nginx  +0ms
  lando autodiscovered legacy api 3 builder symfony-php  +0ms
  lando autodiscovered legacy api 3 builder symfony-postgres  +0ms
  lando autodiscovered legacy api 3 builder symfony-redis  +0ms
  lando autodiscovered legacy api 3 builder symfony  +0ms
  lando autodiscovered legacy api 3 builder tomcat  +0ms
  lando autodiscovered legacy api 3 builder varnish-nginx  +0ms
  lando autodiscovered legacy api 3 builder varnish  +0ms
  lando autodiscovered legacy api 3 builder wordpress-mariadb  +0ms
  lando autodiscovered legacy api 3 builder wordpress-mssql  +0ms
  lando autodiscovered legacy api 3 builder wordpress-mysql  +1ms
  lando autodiscovered legacy api 3 builder wordpress-nginx  +0ms
  lando autodiscovered legacy api 3 builder wordpress-php  +0ms
  lando autodiscovered legacy api 3 builder wordpress-postgres  +0ms
  lando autodiscovered legacy api 3 builder wordpress  +0ms
  lando emitting event post-bootstrap-app  +1ms
  lando app bootstrap completed.  +0ms
  lando bootstrap completed.  +0ms
  lando emitting event post-bootstrap  +0ms
  lando emitting event almost-ready  +0ms
  lando using docker-compose /usr/bin/docker-compose  +1ms
  lando emitting event ready  +12ms
  lando emitting event cli-answers  +1ms
  lando emitting event cli-update-answers  +1ms
  lando emitting event cli-run  +1ms
  lando emitting event cli-update-run  +0ms
  lando @lando/core found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/core'  +0ms
  lando @lando/core instantiated plugin with status %o enabled=true, valid=true, installed=true +8ms
  lando @lando/healthcheck found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/core/plugins/healthcheck'  +0ms
  lando @lando/healthcheck instantiated plugin with status %o enabled=true, valid=true, installed=true +3ms
  lando @lando/networking found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/core/plugins/networking'  +0ms
  lando @lando/networking instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/proxy found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/core/plugins/proxy'  +0ms
  lando @lando/proxy instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/scanner found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/core/plugins/scanner'  +0ms
  lando @lando/scanner instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/sharing found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/core/plugins/sharing'  +0ms
  lando @lando/sharing instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/acquia found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/acquia'  +0ms
  lando @lando/acquia instantiated plugin with status %o enabled=true, valid=true, installed=true +2ms
  lando @lando/apache found plugin at '/snapshot/cli/node_modules/@lando/apache'  +0ms
  lando @lando/apache instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/backdrop found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/backdrop'  +0ms
  lando @lando/backdrop instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/compose found plugin at '/snapshot/cli/node_modules/@lando/compose'  +0ms
  lando @lando/compose instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/dotnet found plugin at '/snapshot/cli/node_modules/@lando/dotnet'  +0ms
  lando @lando/dotnet instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/drupal found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/drupal'  +0ms
  lando @lando/drupal instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/elasticsearch found plugin at '/snapshot/cli/node_modules/@lando/elasticsearch'  +0ms
  lando @lando/elasticsearch instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/go found plugin at '/snapshot/cli/node_modules/@lando/go'  +0ms
  lando @lando/go instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/joomla found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/joomla'  +0ms
  lando @lando/joomla instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/lagoon found plugin at '/snapshot/cli/node_modules/@lando/lagoon'  +0ms
  lando @lando/lagoon instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/lamp found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/lamp'  +0ms
  lando @lando/lamp instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/laravel found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/laravel'  +0ms
  lando @lando/laravel instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/lemp found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/lemp'  +0ms
  lando @lando/lemp instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/mailhog found plugin at '/snapshot/cli/node_modules/@lando/mailhog'  +0ms
  lando @lando/mailhog instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/mariadb found plugin at '/snapshot/cli/node_modules/@lando/mariadb'  +0ms
  lando @lando/mariadb instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/mean found plugin at '/snapshot/cli/node_modules/@lando/mean'  +0ms
  lando @lando/mean instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/memcached found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/memcached'  +0ms
  lando @lando/memcached instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/mongo found plugin at '/snapshot/cli/node_modules/@lando/mongo'  +0ms
  lando @lando/mongo instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/mssql found plugin at '/snapshot/cli/node_modules/@lando/mssql'  +0ms
  lando @lando/mssql instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/mysql found plugin at '/snapshot/cli/node_modules/@lando/mysql'  +0ms
  lando @lando/mysql instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/nginx found plugin at '/snapshot/cli/node_modules/@lando/nginx'  +0ms
  lando @lando/nginx instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/node found plugin at '/snapshot/cli/node_modules/@lando/node'  +0ms
  lando @lando/node instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/pantheon found plugin at '/snapshot/cli/node_modules/@lando/pantheon'  +0ms
  lando @lando/pantheon instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/php found plugin at '/snapshot/cli/node_modules/@lando/php'  +0ms
  lando @lando/php instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/phpmyadmin found plugin at '/snapshot/cli/node_modules/@lando/phpmyadmin'  +0ms
  lando @lando/phpmyadmin instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/platformsh found plugin at '/snapshot/cli/node_modules/@lando/platformsh'  +0ms
  lando @lando/platformsh instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/postgres found plugin at '/snapshot/cli/node_modules/@lando/postgres'  +0ms
  lando @lando/postgres instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/python found plugin at '/snapshot/cli/node_modules/@lando/python'  +0ms
  lando @lando/python instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/redis found plugin at '/snapshot/cli/node_modules/@lando/redis'  +0ms
  lando @lando/redis instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/ruby found plugin at '/snapshot/cli/node_modules/@lando/ruby'  +0ms
  lando @lando/ruby instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/solr found plugin at '/snapshot/cli/node_modules/@lando/solr'  +0ms
  lando @lando/solr instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/symfony found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/symfony'  +0ms
  lando @lando/symfony instantiated plugin with status %o enabled=true, valid=true, installed=true +1ms
  lando @lando/tomcat found plugin at '/snapshot/cli/node_modules/@lando/tomcat'  +0ms
  lando @lando/tomcat instantiated plugin with status %o enabled=true, valid=true, installed=true +7ms
  lando @lando/varnish found plugin at '/snapshot/cli/node_modules/@lando/varnish'  +0ms
  lando @lando/varnish instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando @lando/wordpress found plugin at '/home/MY_USERNAME/.lando/plugins/@lando/wordpress'  +0ms
  lando @lando/wordpress instantiated plugin with status %o enabled=true, valid=true, installed=true +0ms
  lando ERROR Error: Could not find a plugin in /home/MY_USERNAME/.lando/plugins/@lando/core/experimental/lando-experimental
    at new Plugin (/home/MY_USERNAME/.lando/plugins/@lando/core/components/plugin.js:164:69)
    at /home/MY_USERNAME/.lando/plugins/@lando/core/lib/updates.js:57:43
    at Array.map (<anonymous>)
    at set plugins [as plugins] (/home/MY_USERNAME/.lando/plugins/@lando/core/lib/updates.js:57:29)
    at Object.run (/home/MY_USERNAME/.lando/plugins/@lando/core/tasks/update.js:95:29)
    at /snapshot/cli/lib/cli.js
From previous event:
    at process.processImmediate (node:internal/timers:476:21)
From previous event:
    at Object.handler (/snapshot/cli/lib/cli.js)
    at Object.runCommand (/snapshot/cli/node_modules/yargs/lib/command.js:238:44)
    at Object.parseArgs [as _parseArgs] (/snapshot/cli/node_modules/yargs/yargs.js:1063:30)
    at Function.get [as argv] (/snapshot/cli/node_modules/yargs/yargs.js:1004:21)
    at Cli.init (/snapshot/cli/lib/cli.js)
    at Cli.run (/snapshot/cli/lib/cli.js)
    at /snapshot/cli/bin/lando.js  +331ms

lando rebuild --yes now yields:

Rising anew like a fire phoenix from the ashes! Rebuilding app...
no container to killNo stopped containers
[+] Pulling 8/8
 ✔ testserver Pulled                                                                                                                                                                   1.6s
 ✔ database Pulled                                                                                                                                                                     1.3s
 ✔ appserver_nginx Pulled                                                                                                                                                              1.3s
 ✔ edge_ssl Pulled                                                                                                                                                                     1.3s
 ✔ edge Pulled                                                                                                                                                                         1.2s
 ✔ appserver Pulled                                                                                                                                                                    1.3s
 ✔ index Pulled                                                                                                                                                                        1.3s
 ✔ cache Pulled                                                                                                                                                                        1.3s
ERROR ==> Could not find a plugin in /home/MY_USERNAME/.lando/plugins/@lando/core/experimental/lando-experimental

Scanner returns HPE_HEADER_OVERFLOW at startup

Recently when running lando start the scanner for one of our websites started returning red URLs with HPE_HEADER_OVERFLOW errors, despite the fact that the URLs all load just fine in the browser.
image

It appears this error is related to exceeding a max header size of 16 KB in Node.js.

Sure enough, I looked and our site had 17 KB of headers due to somewhat lengthy content-security-policy, surrogate-key, and x-drupal-cache-tags headers. I tried turning off the CSP header which reduced the size to about 16 KB and now the URLs are green again when I restart Lando.

Is there any way to adjust the max header size allowed by the scanner?

`lando setup` fails on Windows if docker-users does not already exist

On a fresh Windows machine, running lando setup installs Docker Desktop and also checks for the docker-users user group. There seems to be a race condition here where the check for the user group can happen before Docker is installed. This causes the setup to crash with Could not determine group situation.

Regression: Task prompts are not shown since v3.21.0-beta15

Beta 15 introduced a regression where task prompts, such as the sudo password prompt when installing or starting docker engine, are no longer displayed. You get something like this:

 ⠧ It seems Docker is not running, trying to start it up...

Instead of this:

 ⠋ It seems Docker is not running, trying to start it up...

? Enter computer password for aaron to start docker ‣

Currently, Lando just sits there waiting for your password but you have no idea you're supposed to be entering it.

Cannot escape sudo prompt

On a linuxy machine without docker running, executing a lando command will cause lando to attempt to start the docker daemon. This begins with a password prompt generated by Lando. If I decide that I do not want to continue entering my password or starting up docker, I might CTRL+C to bail out. However, this seems only to cancel the prompt and trigger a retry of the start docker task so you are immediately prompted again. You can eventually escape the prompt by hitting CTRL+C 25 times to exhaust the retry limit on lando's docker startup task.

SSH keys from host not configured in container due to apparent error in load-keys.sh

Issue summary
Upon building and starting new containers, ssh keys from the host located in ~/.ssh correctly get mounted under /user/.ssh however they are not configured in the container's ssh_config file by the script: load-keys.sh.
-> This means that ssh will by default look for keys under the wrong location.

Apparent cause
After some debugging I noticed that load-keys.sh expect to be run by the root user and only load keys owned by $LANDO_WEBROOT_USER, which by default is user.
However, mounted keys automatically get assigned ownership of the current user. This can be reproduced by running ls -la /user/.ssh as both user and root.
Example:
Result as root:

-rw-------  1 root root 1831 Aug 12 00:28 id_rsa
-rw-r--r--  1 root root  405 Aug 12 00:28 id_rsa.pub

Result as user:

-rw-------  1 user dialout 1831 Aug 12 00:28 id_rsa
-rw-r--r--  1 user dialout  405 Aug 12 00:28 id_rsa.pub

Fix suggestion
Replace the following line with
readarray -t RAW_LIST < <(find "$SSH_DIR" -maxdepth 1 -not -name '*.pub' -not -name 'known_hosts' -type f) to prevent a user check which seems pointless since the SSH_CANDIDATE will be assigned correct permissions and ownership further down the same script.

Happy to make a PR if that helps.

Current config for reference:

  • Host machine: MacBook Pro M2 - Ventura 13.5.1
  • Lando v3.18.0
  • Docker host: OrbStack - 0.17.1

Project specific config:

recipe: lagoon
config:
  flavor: laravel

Container: Alpine Linux v3.18

Proxy URLs Cause Round Robin Results for `appserver_nginx`

For an example app...

name: myproject
recipe: wordpress
config:
  via: nginx
  webroot: web
  database: mariadb:10.2
  xdebug: true

proxy:
  node:
    - bs.myproject.lndo.site:3000

services:
  node:
    type: node
    ssl: true
    command: cd /app/web/wp-content/themes/twentytwentyfour && node_modules/.bin/gulp watch

If you ssh into the node service and try to curl -L appserver_nginx, you'll see results from ALL apps you're running with an appserver_nginx container. Ex: your first result from curl might be from Site A, the next from Site B, the third back to Site A, and so on randomly.

The problem is not restricted to services of type: node; we've tested giving proxy settings to other services and experienced the same results. Nor is it restricted to resolving appserver_nginx; rather, it seems trying to curl any service that you have multiple instances of running (for example, two different apps served by Apache) will create the round robin-ing.

Based on this, I'm guessing this is probably caused by the way we set labels on the Docker containers to tell Traeffik how to setup the proxy URLs.

Note that we found this through a user trying to implement the guide on setting up BrowserSync. That may indicate that this is a new-ish issue, or it may simply indicate that most people don't experience this conflict because they didn't have two apps running with appserver_nginx containers.

Cannot read properties of null (reading 'id')

Versions v3.20.1 and higher (tested up to v3.20.4) and higher are completely unstartable on my Ubuntu WSL2 machine, resulting in the following output when any command is run (this output is from a simple lando command):

undefined:0


TypeError: Cannot read properties of null (reading 'id')
    at /snapshot/cli/node_modules/@lando/core/lib/bootstrap.js
    at /snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js
    at /snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js
    at baseForOwn (/snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js)
    at /snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js
    at baseMap (/snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js)
    at Function.map (/snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js)
    at interceptor (/snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js)
    at Function.thru (/snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js)
    at /snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js

v3.18.0 of lando still works for me, which claims to be using tag v3.16.0 of @lando/core. Checking the diff of changed lines between that tag and main, only two lines appear to attempt to access an id property, 282 and 286.

core/lib/bootstrap.js

Lines 281 to 287 in 8dc2708

_.forEach(config.tooling, (task, command) => {
if (_.isObject(task) && typeof command === 'string') task.id = task.id || command.split(' ')[0];
});
// If the tooling command is being called lets assess whether we can get away with engine bootstrap level
const ids = _(config.tooling).map(task => task.id).filter(_.identity).value();
const level = (_.includes(ids, argv._[0])) ? getBsLevel(config, argv._[0]) : 'app';

Looks like the culprit is likely line 286 not checking if task is an object before accessing its properties.

[v3.20.2] WSL2 Could not detect docker-compose v2.21.0! Downloading it

Hello,

I'm using lando in wsl 2 with docker desktop installed on windows 11.

Latest lando version cannot detect that docker-compose is available and instead is trying to download it:
"Could not detect docker-compose v2.21.0! Downloading it"

image

Everything was working fine in previous version.

Tooling - Dynamic service commands enhancment

basic idea:
using your example:

tooling:
  php-version:
    service: :service
    cmd: php -v
    options:
      service:
        default: appserver
        describe: Run php in different service

But switched to something more usefull like composer:

tooling:
  composer:
    service: :service
    cmd: php -v
    options:
      service:
        default: appserver
        describe: Run composer in different service

Issue is that i need to trigger the correct composer based on the service:
currently core code looks for the dir in the tool -- which does not help,
could the method in the lando tooling utils do something like:

exports.buildCommand = (app, command, service, user, env = {}, dir = undefined) => ({
  id: `${app.project}_${service}_1`,
  compose: app.compose,
  project: app.project,
  cmd: command,
  opts: {
    environment: getCliEnvironment(env),
    mode: 'attach',
    workdir: dir || getServicePath(service) || getContainerPath(app.root),
    user: (user === null) ? getUser(service, app.info) : user,
    services: _.compact([service]),
    hijack: false,
    autoRemove: true,
  },
});

Thereby reading the dir option on the service definition?

Core Plugins are not usable without lando/cli

Both lando-core and lando-recipes need lando.cli to work:

volodymyr@democratic-circus:~/@lando/core/plugins$ grep -RF lando.cli
lando-core/tasks/restart.js:        console.log(lando.cli.makeArt('appRestart', {name: app.name, phase: 'pre'}));
lando-core/tasks/restart.js:          console.log(lando.cli.makeArt('appStart', {name: app.name, phase: type, warnings: app.warnings}));
lando-core/tasks/restart.js:          console.log(lando.cli.formatData(utils.startTable(app), {format: 'table'}, {border: false}));
lando-core/tasks/restart.js:          console.log(lando.cli.makeArt('appStart', {phase: 'error'}));
lando-core/tasks/stop.js:      console.log(lando.cli.makeArt('appStop', {name: app.name, phase: 'pre'}));
lando-core/tasks/stop.js:      return app.stop().then(() => console.log(lando.cli.makeArt('appStop', {name: app.name, phase: 'post'})));
lando-core/tasks/list.js:    options: _.merge({}, lando.cli.formatOptions(), {
lando-core/tasks/list.js:      .then(containers => console.log(lando.cli.formatData(
lando-core/tasks/start.js:        console.log(lando.cli.makeArt('appStart', {name: app.name, phase: 'pre'}));
lando-core/tasks/start.js:          console.log(lando.cli.makeArt('appStart', {name: app.name, phase: type, warnings: app.warnings}));
lando-core/tasks/start.js:          console.log(lando.cli.formatData(utils.startTable(app), {format: 'table'}, {border: false}));
lando-core/tasks/start.js:          console.log(lando.cli.makeArt('appStart', {phase: 'error'}));
lando-core/tasks/info.js:  options: _.merge({}, lando.cli.formatOptions(), {
lando-core/tasks/info.js:          .then(data => console.log(lando.cli.formatData(data, options)))),
lando-core/tasks/info.js:      return app.init().then(() => console.log(lando.cli.formatData(
lando-core/tasks/poweroff.js:      console.log(lando.cli.makeArt('poweroff', {phase: 'pre'}));
lando-core/tasks/poweroff.js:      .then(() => console.log(lando.cli.makeArt('poweroff', {phase: 'post'})));
lando-core/tasks/share.js:      console.log(lando.cli.makeArt('shareWait'));
lando-core/tasks/share.js:        console.log(lando.cli.makeArt('tunnel', {phase: 'pre'}));
lando-core/tasks/destroy.js:      yes: lando.cli.confirm('Are you sure you want to DESTROY?'),
lando-core/tasks/destroy.js:        console.log(lando.cli.makeArt('appDestroy', {phase: 'abort'}));
lando-core/tasks/destroy.js:        console.log(lando.cli.makeArt('appDestroy', {name: app.name, phase: 'pre'}));
lando-core/tasks/destroy.js:        return app.destroy().then(() => console.log(lando.cli.makeArt('appDestroy', {name: app.name, phase: 'post'})));
lando-core/tasks/config.js:  options: _.merge({}, lando.cli.formatOptions(['filter']), {
lando-core/tasks/config.js:    console.log(lando.cli.formatData(lando.config, options, {sort: true}));
lando-core/tasks/rebuild.js:      yes: lando.cli.confirm('Are you sure you want to rebuild?'),
lando-core/tasks/rebuild.js:        console.log(lando.cli.makeArt('appRebuild', {phase: 'abort'}));
lando-core/tasks/rebuild.js:        console.log(lando.cli.makeArt('appRebuild', {name: app.name, phase: 'pre'}));
lando-core/tasks/rebuild.js:          console.log(lando.cli.makeArt('appRebuild', {name: app.name, phase: type, warnings: app.warnings}));
lando-core/tasks/rebuild.js:          console.log(lando.cli.formatData(utils.startTable(app), {format: 'table'}, {border: false}));
lando-recipes/tasks/init.js:  console.log(lando.cli.makeArt('init'));
lando-recipes/tasks/init.js:  console.log(lando.cli.formatData({

Which means we cannot use something like

const nodeModulesPath = /* ... */;
const lando = new Lando( {
// ...
	pluginDirs: [
		path.join( nodeModulesPath, '@lando', 'core' ),
		{
			path: path.join( nodeModulesPath, '@lando' ),
			subdir: '.',
			namespace: '@lando',
		},
	],
// ...
} );

pre-bootstrap-tasks will fail with:

TypeError: Cannot read property 'formatOptions' of undefined
    at module.exports (.../node_modules/@lando/core/plugins/lando-core/tasks/config.js:9:34)
    at .../node_modules/@lando/core/lib/lando.js:89:37
From previous event:
    at processImmediate (internal/timers.js:464:21)

Add support for running against a local docker image.

When trying to test lando against a locally built image, it makes an attempt to call docker-compose pull to pull, but crashes because the docker image doesn't exist in an upstream repo.

We should probably be building with docker-compose build --pull instead rather than have it as two separate commands (it's probably more performant too).


Example .lando.yml file:

# file: .lando.yml
name: docker-test
services:
  test:
    type: compose
    app_mount: delegated
    overrides:
      # This image only exists locally for now, so Lando should be able to use it just fine.
      image: docker-test/only-locally-available
      command: tail -f /dev/null

api: 3 healthcheck will fail if it relies on certs

for api: 3 services healthchecks run on post-start-2 and cert refreshing happens on post-start-9999 so if your healthcheck relies on the certs the healthcheck will fail: eg curl -I https://localhost vs curl -I http://localhost.

given that api: 3 services are going away this might not be worth addressing or at least not nowish especially since generally a non-cert based healthcheck is usually available,

`channel: stable` is being ignored

Even with channel: stable in ~/.lando/config.yml, I constantly see the nag about a beta release being available. The project's Lando config does not have a channel property. Why is global config being ignored?

New URL scanner returns fail for redirects?

URLs never work anymore, they initially work sometimes on new projects but as soon as more projects are added something gets update

    ✖ https://localhost:53166 [301] - REQUEST FAILED WITH STATUS CODE 301
    ✖ http://localhost:53167 [301] - REQUEST FAILED WITH STATUS CODE 301

TypeError on Windows with lando 3.9.0

I just updated to lando 3.9.0 (from 3.6.5) and when I try to start (or rebuild) any app I get this error:

TypeError: Cannot read properties of undefined (reading 'confirm')
    at C:\snapshot\cli\node_modules\@lando\core-next\tasks\destroy.js
    at C:\snapshot\cli\node_modules\@lando\core\lib\lando.js
From previous event:
    at processImmediate (node:internal/timers:466:21)

As seen in the attached picture it first outputs the help information for the start command, and then fails with the error.

I'm running on Windows 11. Docker Desktop didn't automatically update for me when running the lando installer (I tried twice), so I had to install 4.16.1 manually. I got the same error both before and after updating Docker though.

image

I also tried running it with the --clean command, which seemed to success ("Lando has cleared the tasks cache!"), after which the error changed to not show the help section any more:
image

axios returns unhelpful message when response is undefined

Getting the following error:

` /bin/bash -c "$(curl -fsSL https://get.lando.dev/setup-lando.sh)"
this script is about to:

  • download lando v3.21.0-beta.12-slim to /usr/local/bin
  • run lando setup
  • run lando update
  • run lando shellenv --add

Press RETURN/ENTER to continue or any other key to abort:
downloading https://github.com/lando/cli/releases/download/v3.21.0-beta.12/lando-macos-x64-v3.21.0-beta.12-slim to /usr/local/bin/lando
################################################################################################## 100.0%
downloaded @lando/cli to /usr/local/bin/lando
/bin/bash: line 703: 85010 Killed: 9 "$@"
ERROR: Failed during: /usr/local/bin/lando `--clear``

lando update check for @lando.cli always fails on corporate network with custom CA cert

I recently updated from Lando 3.20.8 to 3.21.0. Everything seems to be working fine, but one oddity I've noticed is that lando update always returns an error for the @lando/cli package:

update check failed! fetch failed [500]

lando update --debug shows this additional error message:

lando an update error check occured with %o name=HttpError, status=500, method=GET, url=https://api.github.com/repos/lando/cli/releases, accept=application/vnd.github.v3+json, user-agent=octokit-rest.js/19.0.13 octokit-core.js/4.2.4 Node.js/18.19.1 (linux; x64), hook=function () { [native code] } +877ms

image
image (1)

I'm running Lando on Windows WSL2 on a corporate network that does TLS decryption, basically a man-in-the-middle attack so that it can inspect the encrypted traffic. We've had to configure WSL and Lando to trust our internal certificate authority (CA) so that it can make HTTPS requests. Based on a Slack discussion with @pirog I suspect that the Octokit network stack doing the lando/cli check needs to be configured to trust our custom CA certificate, but how do I do that?

shutdown alias of poweroff command

It would be nice if there is an alias of poweroff with shutdown

if its just adding the shutdown.js like poweroff.js nothing else I can make a PR and of course with adding same to docs as well

allow passthrough of Docker/Buildkit CLI options

With docker compose v2, there are some underlying changes to how it performs builds (mostly around the use of buildkit if available).

In order to control these, in docker compose, we can use DOCKER_BUILDKIT=0 to disable, or BUILDKIT_PROGRESS=plain to show full build debug
e.g.

BUILDKIT_PROGRESS=plain docker compose build

it would be good if we could somehow also pass these variables through Lando to aid with debugging/support. I know that you use ?dockerode to call the docker API - but no idea whether passing CLI options across is a thing

Uninstall

I am getting ready to install the newest version of Lando after it was changed to require an installer instead of manually installing a deb file. Now I cannot seem to find a way to uninstall it again in case something goes wrong and I need to roll back to the deb version?

https://docs.lando.dev/install/linux.html

Is there a secret page that explains the uninstall process?

Docker issues on WSL when Docker Desktop integration is disabled

Do I have this issue?

  • If Lando can't seem to start Docker and executing docker version in your WSL session shows a message telling you to enable WSL integration in Docker Desktop, then you have this issue.

What's the workaround?

  • In Docker Desktop Settings > Resources > WSL Integration, enable integration for your WSL2 instance.
  • Start a fresh WSL shell so you get the updated configuration and start using Lando.

The problem

  • Windows binary paths are automatically included in a WSL instance's $PATH to allow executing a Windows exe from the WSL CLI.
  • Docker Desktop has a 'docker' binary that exists in the same directory as docker.exe. This is not the docker binary that is capable of executing commands. Instead it just echos a message telling you to enable Docker Desktop integration.
  • Because this "not actually docker" docker binary exists in $PATH, Lando perceives that Docker exists (which docker and which docker-compose?) during lando setup, so it skips installing it.
  • Lando subsequently can't start docker because the docker daemon doesn't exist.
  • Logs mislead by showing "systemd" errors as the likely cause because Lando is trying both the systemd and initd methods of starting services where systemd is not enabled on Debian-based WSL instances such as the Ubuntu default.

Repro

  • Install Docker Desktop for Windows.
  • Create a fresh WSL instance (or make sure the "docker" user group doesn't exist)
  • In Docker Desktop Settings > Resources > WSL Integration, disable integration for your WSL2 instance.
  • In the WSL instance:
    • Run lando setup
    • Notice lando setup does not attempt to install docker and also fails to add the user to the "docker" group
    • Notice subsequent lando commands fail to start docker (because it doesn't exist, but the user doesn't know that)
    • Be mislead by "systemd" errors in logs as the only clue as to why docker didn't start.

Suggested Fix

  • Improve the existing WSL/Docker Desktop detection to include this scenario.
  • Improve lando setup so that it doesn't report that Docker is already installed in this scenario.
  • If possible, try to enable the WSL integration in Docker Desktop during lando setup because Docker recommends using Docker Desktop WSL integration vs installing docker directly.
  • If automatically enabling WSL integration is not possible, we should fail with an error telling the user to enable it and restart their shell.

Unexpected behavior from user-perms.sh

I noticed some error messages in output from lando rebuild - this is a drupal localdev.
The errors I see are:

php_1        | chown: unknown user/group user:/home
php_1        | chown: unknown user/group user:/home
php_1        | chown: unknown user/group user:/home

I've traced this back to be coming from user-perms.sh.
Looking at the lando logs are interesting:

php_1        | userperms 00:22:19.INFO  ==> Symlinked users .gitconfig.
php_1        | userperms 00:22:19.INFO  ==> Symlinked users known_hosts
php_1        | userperms 00:22:19.INFO  ==> This is a alpine container
php_1        | userperms 00:22:19.INFO  ==> user-perms.sh kicking off as user uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
php_1        | userperms 00:22:19.DEBUG ==> Lando ENVVARS set at
php_1        | userperms 00:22:19.DEBUG ==> 
php_1        | userperms 00:22:19.DEBUG ==> ========================================
php_1        | userperms 00:22:19.DEBUG ==> LANDO_WEBROOT_USER      : user
php_1        | userperms 00:22:19.DEBUG ==> LANDO_WEBROOT_GROUP     : user
php_1        | userperms 00:22:19.DEBUG ==> LANDO_WEBROOT_UID       : 1001
php_1        | userperms 00:22:19.DEBUG ==> LANDO_WEBROOT_GID       : 1001
php_1        | userperms 00:22:19.DEBUG ==> LANDO_HOST_UID          : 1001
php_1        | userperms 00:22:19.DEBUG ==> LANDO_HOST_GID          : 1001
php_1        | userperms 00:22:19.DEBUG ==> ========================================
php_1        | userperms 00:22:19.DEBUG ==> 
php_1        | userperms 00:22:19.INFO  ==> Making sure correct user:group (user:user) exists...
php_1        | userperms 00:22:19.INFO  ==> Remapping ownership to handle docker volume sharing...
php_1        | userperms 00:22:19.INFO  ==> Resetting user:user from 1001:1001 to 1001:1001
php_1        | userperms 00:22:19.INFO  ==> user:user is now running as uid=1001(user) gid=1000(user) groups=1000(user),1000(user)!
php_1        | userperms 00:22:19.INFO  ==> And here. we. go.
php_1        | userperms 00:22:19.INFO  ==> Doing the permission sweep.
php_1        | chown: unknown user/group user:/home
php_1        | chown: unknown user/group user:/home
php_1        | chown: unknown user/group user:/home

The part that really has me scratching my head is:

php_1        | userperms 00:22:19.INFO  ==> Resetting user:user from 1001:1001 to 1001:1001
php_1        | userperms 00:22:19.INFO  ==> user:user is now running as uid=1001(user) gid=1000(user) groups=1000(user),1000(user)!

It looks like the group ID isn't being created or set properly, although I don't know why that would be the case.
I can't instrument ~/.lando/scripts to give me more output, as any changes to scripts there get overwritten.
Thoughts?

downloaded docker-compose binary cannot be made executable

I upgraded from 3.18 today and when I try to run any lando command I get this error:

ERROR ==> Error: spawn /Users/brs49/.lando/bin/docker-compose-v2.21.0 EACCES

I downloaded a second time, tried to reinstall and the same behavior. Considering dropping back to 3.18 but will wait for input.

"Error: EPERM: operation not permitted" after Lando re-install

Tell us about your setup

Example: v3.0.0-rc.16 on MacOS 10.14.5

Example:

name: test
recipe: lamp

This was a reduced test case for debugging why lndo.site urls were failing. The only other file in this project is index.php with this content:

<h1>Hello World</h1>

Tell us about the command you were running

Unhandled rejection Error: EPERM: operation not permitted, unlink '/Users/dave/.lando/scripts/lando-entrypoint.sh'
    at Object.fs.unlinkSync (fs.js:1049:3)
    at Object.exports.moveConfig (/snapshot/lando/build/cli/lib/utils.js:0:0)
    at lando.Promise.map.plugin (/snapshot/lando/build/cli/lib/lando.js:0:0)
    at runCallback (timers.js:696:18)
    at tryOnImmediate (timers.js:667:5)
    at processImmediate (timers.js:649:5)
From previous event:
    at bootstrapEngine (/snapshot/lando/build/cli/lib/lando.js:0:0)
    at bootstrapRouter (/snapshot/lando/build/cli/lib/lando.js:0:0)
    at module.exports.bootstrap.Promise.each.level.events.emit.then (/snapshot/lando/build/cli/lib/lando.js:0:0)
From previous event:
    at module.exports.bootstrap.Promise.each.level (/snapshot/lando/build/cli/lib/lando.js:0:0)
From previous event:
    at Lando.bootstrap (/snapshot/lando/build/cli/lib/lando.js:0:0)
    at Object.<anonymous> (/snapshot/lando/build/cli/bin/lando.js:0:0)
    at Module._compile (pkg/prelude/bootstrap.js:1254:22)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:711:10)
    at Module.load (internal/modules/cjs/loader.js:610:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:549:12)
    at Function.Module._load (internal/modules/cjs/loader.js:541:3)
    at Function.Module.runMain (pkg/prelude/bootstrap.js:1309:12)
    at startup (internal/bootstrap/node.js:274:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:608:3)

Tell us generally about your bug

Since yesterday afternoon, lndo.site urls have failed. I finally stumbled on lando/lando#1490.

Deleted my /.lando directory and tried reinstalling 3.0.0rc16. Now, I get the above error on every project.

`scanUrls()` fail for services bound to `localhost` if `localhost` resolves to an IPv6 address

In our Landofile, we use mailhog:

services:
  mailhog:
    type: mailhog

# ...

When we start the environment, we see the following errors:

Scanning to determine which services are ready... Please stand by...
vip-local 02:49:52 VERBOSE ==> about to scan urls 
vip-local 02:49:52 DEBUG ==> scanning data urls=[http://vip-local.vipdev.lndo.site/, https://vip-local.vipdev.lndo.site/, http://localhost:32776], max=16, waitCodes=[400, 502, 404]
vip-local 02:49:52 DEBUG ==> checking to see if http://vip-local.vipdev.lndo.site/ is ready. 
vip-local 02:49:52 DEBUG ==> checking to see if https://vip-local.vipdev.lndo.site/ is ready. 
vip-local 02:49:52 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:49:52 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:49:52 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:49:52 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:49:53 DEBUG ==> scan response https://vip-local.vipdev.lndo.site/ received status=200, cache-control=no-cache, must-revalidate, max-age=0, content-type=text/html; charset=UTF-8, date=Wed, 11 Jan 2023 00:49:53 GMT, expires=Wed, 11 Jan 1984 05:00:00 GMT, host-header=a9130478a60e5f9135f765b23f26593b, link=<https://vip-local.vipdev.lndo.site/wp-json/>; rel="https://api.w.org/", server=nginx/1.23.2, x-hacker=If you're reading this, you should visit wpvip.com/careers and apply to join the fun, mention this header., x-powered-by=WordPress VIP <https://wpvip.com>, x-robots-tag=noindex, nofollow, connection=close, transfer-encoding=chunked
vip-local 02:49:53 DEBUG ==> https://vip-local.vipdev.lndo.site/ is ready 
vip-local 02:49:53 DEBUG ==> scan response http://vip-local.vipdev.lndo.site/ received status=200, cache-control=no-cache, must-revalidate, max-age=0, content-type=text/html; charset=UTF-8, date=Wed, 11 Jan 2023 00:49:53 GMT, expires=Wed, 11 Jan 1984 05:00:00 GMT, host-header=a9130478a60e5f9135f765b23f26593b, link=<http://vip-local.vipdev.lndo.site/wp-json/>; rel="https://api.w.org/", server=nginx/1.23.2, x-hacker=If you're reading this, you should visit wpvip.com/careers and apply to join the fun, mention this header., x-powered-by=WordPress VIP <https://wpvip.com>, x-robots-tag=noindex, nofollow, connection=close, transfer-encoding=chunked
vip-local 02:49:53 DEBUG ==> http://vip-local.vipdev.lndo.site/ is ready 
vip-local 02:49:53 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:49:53 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:49:53 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:49:53 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:49:54 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:49:54 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:49:54 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:49:54 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:49:55 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:49:55 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:49:55 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:49:55 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:49:57 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:49:57 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:49:57 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:49:57 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:00 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:00 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:00 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:00 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:03 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:03 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:03 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:03 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:06 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:06 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:06 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:06 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:10 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:10 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:10 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:10 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:15 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:15 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:15 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:15 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:20 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:20 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:20 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:20 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:25 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:25 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:25 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:25 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:31 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:31 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:31 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:31 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:38 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:38 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:38 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:38 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:45 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:45 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:45 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:45 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:50:52 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:50:52 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:50:52 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:50:52 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:51:00 DEBUG ==> checking to see if http://localhost:32776 is ready. 
vip-local 02:51:00 DEBUG ==> scan failed for http://localhost:32776 code=ECONNREFUSED, message=connect ECONNREFUSED ::1:32776
vip-local 02:51:00 DEBUG ==> No response for http://localhost:32776. Setting to bad 
vip-local 02:51:00 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:51:00 DEBUG ==> http://localhost:32776 not currently accessible 
vip-local 02:51:00 VERBOSE ==> scan completed. 
vip-local 02:51:00 DEBUG ==> scan results. url=http://vip-local.vipdev.lndo.site/, status=true, color=green, url=https://vip-local.vipdev.lndo.site/, status=true, color=green, url=http://localhost:32776, status=false, color=red

You can see that the issue happens because localhost resolves to ::1 instead of 127.0.0.1. Although in our case it resolves to both addresses:

$ host localhost
localhost has address 127.0.0.1
localhost has IPv6 address ::1

it still depends on the system which address family is preferred. By default, Docker does not use IPv6.

The fix is trivial, though:

+const http = require('http');

 const requestClient = () => {
   const axios = require('axios');
   // @todo: is it ok to turn redirects off here?
   // if we don't we get an error every time http tries to redirect to https
-  return axios.create({maxRedirects: 0, httpsAgent: new https.Agent({rejectUnauthorized: false})});
+  return axios.create({maxRedirects: 0, httpsAgent: new https.Agent({rejectUnauthorized: false, family: 4}), httpAgent: new http.Agent({family: 4})});
 };

This change makes IPv4 the preferred address family and fixes the issue.

Of course, it is possible to resolve the issue by setting up a post-start hook with a priority lower than 10:

	app.info
		.forEach( service => {
			service.urls.forEach( ( url, idx, arr ) => {
				arr[ idx ] = url.replace( /\/\/localhost:/, '//127.0.0.1:' );
			} );
		} );

but to me, this should be fixed in the core.

ERROR ==> EACCES: permission denied, scandir '/home/$User/.ssh'

$ lando start
Let's get this party started! Starting app hello-lando...
ERROR ==> EACCES: permission denied, scandir '/home/baker/.ssh' message=EACCES: permission denied, scandir '/home/baker/.ssh', stack=Error: EACCES: permission denied, scandir '/home/baker/.ssh'
at Object.readdirSync (fs.js:1047:3)
at Object.readdirSync (pkg/prelude/bootstrap.js:1266:35)
at AsyncEvents. (/snapshot/cli/plugins/lando-core/app.js)
at AsyncEvents.handle (/snapshot/cli/lib/events.js)
at /snapshot/cli/lib/events.js
From previous event:
at AsyncEvents.emit (/snapshot/cli/lib/events.js)
at /snapshot/cli/lib/app.js
From previous event:
at App.init (/snapshot/cli/lib/app.js)
at initAndReport (/snapshot/cli/lib/app.js)
at App.start (/snapshot/cli/lib/app.js)
at Object.run (/snapshot/cli/plugins/lando-core/tasks/start.js)
From previous event:
at /snapshot/cli/lib/cli.js
From previous event:
at Object.handler (/snapshot/cli/lib/cli.js)
at Object.runCommand (/snapshot/cli/node_modules/yargs/lib/command.js:238:44)
at Object.parseArgs [as _parseArgs] (/snapshot/cli/node_modules/yargs/yargs.js:1063:30)
at Function.get [as argv] (/snapshot/cli/node_modules/yargs/yargs.js:1004:21)
at Cli.init (/snapshot/cli/lib/cli.js)
at Cli.run (/snapshot/cli/lib/cli.js)
at Object. (/snapshot/cli/bin/lando.js)
at Module._compile (pkg/prelude/bootstrap.js:1887:22)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Function.runMain (pkg/prelude/bootstrap.js:1940:12)
at internal/main/run_main_module.js:17:47, errno=-13, syscall=scandir, code=EACCES, path=/home/baker/.ssh, stackCleaned=true

██╗ ██╗██╗ ██╗ ██████╗ ██╗ ██╗██╗
██║ ██║██║ ██║ ██╔═══██╗██║ ██║██║
██║ ██║███████║ ██║ ██║███████║██║
██║ ██║██╔══██║ ██║ ██║██╔══██║╚═╝
╚██████╔╝██║ ██║ ╚██████╔╝██║ ██║██╗
╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝

An error occurred while starting up your app!
Here are a few things you can try to get back into a good state:

■ Try running lando rebuild
■ Try restarting in debug mode lando restart -vvv
■ Try checking the logs with lando logs

If those fail then consult the troubleshooting materials:

https://docs.lando.dev/help/logs.html
https://docs.lando.dev/help/updating.html

Or post your issue to Slack or GitHub

■ Slack - https://launchpass.com/devwithlando
■ GitHub - https://github.com/lando/lando/issues/new/choose

ERROR ==> EACCES: permission denied, scandir '/home/baker/.ssh'
baker@BH-hplaptop15bs1xx:/hello$ sudo chmod 700 /home/$USER/.ssh
baker@BH-hplaptop15bs1xx:
/hello$ service ssh restart
baker@BH-hplaptop15bs1xx:~/hello$ lando start
Let's get this party started! Starting app hello-lando...
ERROR ==> EACCES: permission denied, scandir '/home/baker/.ssh' message=EACCES: permission denied, scandir '/home/baker/.ssh', stack=Error: EACCES: permission denied, scandir '/home/baker/.ssh'
at Object.readdirSync (fs.js:1047:3)
at Object.readdirSync (pkg/prelude/bootstrap.js:1266:35)
at AsyncEvents. (/snapshot/cli/plugins/lando-core/app.js)
at AsyncEvents.handle (/snapshot/cli/lib/events.js)
at /snapshot/cli/lib/events.js
From previous event:
at AsyncEvents.emit (/snapshot/cli/lib/events.js)
at /snapshot/cli/lib/app.js
From previous event:
at App.init (/snapshot/cli/lib/app.js)
at initAndReport (/snapshot/cli/lib/app.js)
at App.start (/snapshot/cli/lib/app.js)
at Object.run (/snapshot/cli/plugins/lando-core/tasks/start.js)
From previous event:
at /snapshot/cli/lib/cli.js
From previous event:
at Object.handler (/snapshot/cli/lib/cli.js)
at Object.runCommand (/snapshot/cli/node_modules/yargs/lib/command.js:238:44)
at Object.parseArgs [as _parseArgs] (/snapshot/cli/node_modules/yargs/yargs.js:1063:30)
at Function.get [as argv] (/snapshot/cli/node_modules/yargs/yargs.js:1004:21)
at Cli.init (/snapshot/cli/lib/cli.js)
at Cli.run (/snapshot/cli/lib/cli.js)
at Object. (/snapshot/cli/bin/lando.js)
at Module._compile (pkg/prelude/bootstrap.js:1887:22)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Function.runMain (pkg/prelude/bootstrap.js:1940:12)
at internal/main/run_main_module.js:17:47, errno=-13, syscall=scandir, code=EACCES, path=/home/baker/.ssh, stackCleaned=true

██╗ ██╗██╗ ██╗ ██████╗ ██╗ ██╗██╗
██║ ██║██║ ██║ ██╔═══██╗██║ ██║██║
██║ ██║███████║ ██║ ██║███████║██║
██║ ██║██╔══██║ ██║ ██║██╔══██║╚═╝
╚██████╔╝██║ ██║ ╚██████╔╝██║ ██║██╗
╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝

An error occurred while starting up your app!
Here are a few things you can try to get back into a good state:

■ Try running lando rebuild
■ Try restarting in debug mode lando restart -vvv
■ Try checking the logs with lando logs

If those fail then consult the troubleshooting materials:

https://docs.lando.dev/help/logs.html
https://docs.lando.dev/help/updating.html

Or post your issue to Slack or GitHub

■ Slack - https://launchpass.com/devwithlando
■ GitHub - https://github.com/lando/lando/issues/new/choose

ERROR ==> EACCES: permission denied, scandir '/home/baker/.ssh'

Version task fails if .lando.yml contains invalid config

Since updated packages can be defined in .lando.yml, it makes sense that lando loads it to get versions. However, in situations such as those created by setup-lando in GHA, where a slim version of Lando is installed but service plugins are not yet downloaded, Lando throws errors on lando version about invalid service types in .lando.yml. This is causing most of the official Lando plugin's tests to fail because setup-lando validates the version before running lando setup.

Lando should probably have special error handling around tasks like version so that it will always succeed if obtaining the version is at all possible, even if other error states are present.

Underscores from project name no longer used to create URLs

Using the following .lando.yml:

name: just_a_test
recipe: drupal10

Lando v3.20.8:

APPSERVER URLS
https://localhost:32884 [200]
http://localhost:32885 [200]
http://just_a_test.lndo.site/ [200]
https://just_a_test.lndo.site/ [200]

Lando v3.21.0-beta.1:

APPSERVER URLS
https://localhost:32869 [200]
http://localhost:32870 [200]
http://justatest.lndo.site/ [200]
https://justatest.lndo.site/ [200]

With the new beta, the _ from the project name are no longer used to create the URLs.

Is this intended functionality? I did not see it in the extended release notes

Lando Docker WSL2 Issue

I'm running Lando 3.11 on Windows 11 with WSL2. When I attempt to run any command, I get WARN ==> docker is not running!, despite docker desktop already running. If I run with -vvvv I see.

lando        11:25:56 DEBUG ==> engine is down with error message=errors pretty printing info
, stack=Error: errors pretty printing info

    at /snapshot/cli/node_modules/@lando/core/lib/shell.js
    at processImmediate (node:internal/timers:466:21)
From previous event:
    at Shell.sh (/snapshot/cli/node_modules/@lando/core/lib/shell.js)
    at LandoDaemon.isUp (/snapshot/cli/node_modules/@lando/core/lib/daemon.js)
    at /snapshot/cli/lib/cli.js
From previous event:
    at /snapshot/cli/lib/cli.js
    at processImmediate (node:internal/timers:466:21)
From previous event:
    at Object.handler (/snapshot/cli/lib/cli.js)
    at Object.runCommand (/snapshot/cli/node_modules/yargs/lib/command.js:238:44)
    at Object.parseArgs [as _parseArgs] (/snapshot/cli/node_modules/yargs/yargs.js:1063:30)
    at Function.get [as argv] (/snapshot/cli/node_modules/yargs/yargs.js:1004:21)
    at Cli.init (/snapshot/cli/lib/cli.js)
    at Cli.run (/snapshot/cli/lib/cli.js)
    at Object.<anonymous> (/snapshot/cli/bin/lando.js)
    at Module._compile (pkg/prelude/bootstrap.js:1887:22)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.runMain (pkg/prelude/bootstrap.js:1940:12)
    at node:internal/main/run_main_module:17:47, __stackCleaned__=true

Looking at the source, the call to isUp mentioned by the stack there is trying to run the command docker info to determine the state of docker.

core/lib/daemon.js

Lines 159 to 172 in e962924

isUp(log = this.log, cache = this.cache, docker = this.docker) {
// Auto return if cached and true
if (cache.get('engineup') === true) return Promise.resolve(true);
// Return true if we get a zero response and cache the result
return shell.sh([`"${docker}"`, 'info']).then(() => {
log.debug('engine is up.');
cache.set('engineup', true, {ttl: 5});
return Promise.resolve(true);
})
.catch(error => {
log.debug('engine is down with error', error);
return Promise.resolve(false);
});
};

Docker's spitting out the associated error. But I have no problem running docker info in the same terminal window where lando is failing.

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc., v0.10.0)
  compose: Docker Compose (Docker Inc., v2.15.1)
  dev: Docker Dev Environments (Docker Inc., v0.0.5)
  extension: Manages Docker extensions (Docker Inc., v0.2.17)
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0)
  scan: Docker Scan (Docker Inc., v0.23.0)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 9
 Server Version: 20.10.22
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 9ba4b250366a5ddde94bb7c9d1def331423aa323
 runc version: v1.1.4-0-g5fd4c4d
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.15.90.1-microsoft-standard-WSL2
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 16
 Total Memory: 15.6GiB
 Name: docker-desktop
 ID: CRKN:C2FB:BXSO:654M:7SDL:POMC:2EKE:MPID:VYLR:FG7I:5YO6:27AG
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 No Proxy: hubproxy.docker.internal
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  hubproxy.docker.internal:5000
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support

Any idea what I'm doing wrong here?

Cannot find file via tool script after latest update

I just updated to use the latest version of Lando. I have a script for importing a backup of my lastest database dump which no longer works.

image

The script is just this

#!/bin/bash
DATE=`/bin/date +%Y-%m-%d`
FILENAME="intranet-"$DATE".sql.gz"

if [ "$1" != "" ]
then
    FILENAME=$1
fi

echo "Importing $FILENAME"
/helpers/sql-import.sh  $FILENAME

and the tooling

  import-db:
    cmd:
      - database: /app/scripts/import-db.sh

If i ssh into the database container and run the script directly it works just fine.

Cannot start any project in 3.21.0-beta.1

Hello,
I have updated lando to the latest version today and am unable to start any project - here is the error message

Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu/fbca942db8f70dc7d5150f9e042d5580d249ce84d490da08534929fbb15e1870" to rootfs at "/opt/bitnami/nginx/conf/lando.conf": mount /run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu/fbca942db8f70dc7d5150f9e042d5580d249ce84d490da08534929fbb15e1870:/opt/bitnami/nginx/conf/lando.conf (via /proc/self/fd/6), flags: 0x5000: no such file or directory: unknown

Lando is installed in wsl (2) not in windows directly, docker version is 4.27.2.
If I run lando destroy and then lando start, it works - but if I run lando start on a stopped project it throws the error above.

Also, if I restart docker and start container via docker ui it will start but if I try lando start (which fails) then it becomes impossible to start it again via docker ui - restarting docker will again allows me to start containers via docker ui.

Disable tooling functionality broke in v3.20.1

When trying to disable a command using this documentation:
https://docs.lando.dev/core/v3/tooling.html#disabling

And running any command it throws an error:
`lando --version
pkg/prelude/bootstrap.js:1926
return wrapper.apply(this.exports, args);
^

TypeError: Cannot create property 'id' on string 'disabled'
at /snapshot/cli/node_modules/@lando/core/lib/bootstrap.js
at /snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js
at baseForOwn (/snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js)
at /snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js
at Function.forEach (/snapshot/cli/node_modules/@lando/core/node_modules/lodash/lodash.js)
at Object.getTasks (/snapshot/cli/node_modules/@lando/core/lib/bootstrap.js)
at Object. (/snapshot/cli/bin/lando.js)
at Module._compile (pkg/prelude/bootstrap.js:1926:22)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)`

Lando `v3.21.0-alpha.10` sees the Docker version as unsupported, even though it falls in the supported range

Hello 👋

Lando v3.21.0-alpha.10 complains about Docker 24.0.7-1 not being supported, even though it falls in the >=18 <25 range:

  Using an unsupported version of DOCKER ENGINE
  You have version 24.0.7-1 but Lando wants something in the >=18 <25 range.

As far as I know, 24 is higher than 18, and lower than 25 😄


devcontainer.json:

{
  "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "features": {
    "docker-in-docker": "latest",
    "lando/lando-dev-container-feature/landodevcontainer": "latest"    
  }
}

.lando.yml:

name: newzoo
recipe: wordpress

config:
  webroot: wordpress
  via: apache:2.4
  php: "8.2"
  database: mariadb:10.4

services:
  appserver:
    ssl: false
  node:
    type: node:16
  phpmyadmin:
    type: phpmyadmin
    hosts:
      - database

events:
  pre-start:
    - node: echo -e "\e[36mRunning npm install...\e[0m"
    - node: cd wordpress/wp-content/themes/newzoo && npm i --no-progress --silent --no-fund
    - appserver: echo -e "\e[36mRunning composer install...\e[0m"
    - appserver: cd wordpress/wp-content/themes/newzoo && composer install --no-progress --no-interaction --no-dev --optimize-autoloader

tooling:
  npm: # lando npm
    service: node
  node: # lando node
    service: node

Thank you!

OrbStack not working with Lando.

Hello Lando team!

I've discovered what I think is a bug that I reported to OrbStack but they discovered and pointed out an interesting find in the Lando daemon.js.

It appears that it's hardcoded to look for the Docker app when trying to read info.

I was getting errors for Cannot read properties of null (reading 'trim') until I installed the Docker desktop app. After I installed that, I ran it once and shut it down. Booted up OrbStack again and Lando was working again.

Could you add a prompt for that when a Lando project spins up for the first time? Or maybe allowing it to be defined in a yml config?

Github issues using lando init

On slack, there's been 2 issues in the last couple weeks where we've had issues with people cloning directly from Github using the lando init dialogue. This should probably be tested from the dialog and at the least check the documentation.

[lando 3.21 beta][drush] Command failing after lando rebuild

❯ lando version
v3.21.0-beta.2

OS: Linux (but a colleague using mac os x had the same)

I have been seeing this kind of errors when using lando drush after lando rebuild:

ERROR ==> Error: ENOENT: no such file or directory, unlink '/home/vermario/.lando/scripts/add-cert.sh'
ERROR ==> Error: ENOENT: no such file or directory, chmod '/home/vermario/.lando/scripts/install-docker-desktop.sh'

Those files are definitely there though:

contents of /home/vermario/.lando/scripts/:

❯ ls -lh
total 240K                                                 ✔ 
-rwxr-xr-x 1 vermario vermario  811 Feb 21 14:18 acquia-clone.sh
-rwxr-xr-x 1 vermario vermario  242 Feb 21 14:18 acquia-config-symlink.sh
-rwxr-xr-x 1 vermario vermario  322 Feb 21 14:18 acquia-generate-key.sh
-rwxr-xr-x 1 vermario vermario 3.1K Feb 21 14:18 acquia-pull.sh
-rwxr-xr-x 1 vermario vermario 2.1K Feb 21 14:18 acquia-push.sh
-rwxr-xr-x 1 vermario vermario  280 Feb 21 14:18 acquia-wait-for-user.sh
-rwxr-xr-x 1 vermario vermario 4.3K Feb 21 14:18 add-cert.sh
-rwxr-xr-x 1 vermario vermario 1.6K Feb 21 14:18 auth.sh
-rwxr-xr-x 1 vermario vermario  326 Feb 21 14:18 binding.sh
-rwxr-xr-x 1 vermario vermario  314 Feb 21 14:18 generate-key.sh
-rwxr-xr-x 1 vermario vermario 1.6K Feb 21 14:18 get-remote-url.sh
-rwxr-xr-x 1 vermario vermario  809 Feb 21 14:18 install-backdrush.sh
-rwxr-xr-x 1 vermario vermario  482 Feb 21 14:18 install-bee.sh
-rwxr-xr-x 1 vermario vermario 1.4K Feb 21 14:18 install-composer.sh
-rwxr-xr-x 1 vermario vermario 1.4K Feb 21 14:18 install-docker-desktop.ps1
-rwxr-xr-x 1 vermario vermario 1.1K Feb 21 14:18 install-docker-desktop.sh
-rwxr-xr-x 1 vermario vermario  923 Feb 21 14:18 install-docker-engine.sh
-rwxr-xr-x 1 vermario vermario 1.5K Feb 21 14:18 install-render-template.sh
-rwxr-xr-x 1 vermario vermario  296 Feb 21 14:18 lagoon-auth.sh
-rwxr-xr-x 1 vermario vermario  641 Feb 21 14:18 lagoon-generate-key.sh
-rwxr-xr-x 1 vermario vermario 4.8K Feb 21 14:18 lagoon-pull.sh
-rwxr-xr-x 1 vermario vermario 4.9K Feb 21 14:18 lagoon-push.sh
-rwxr-xr-x 1 vermario vermario 2.1K Feb 21 14:18 lagoon-sql-export.sh
-rwxr-xr-x 1 vermario vermario 3.8K Feb 21 14:18 lagoon-sql-import.sh
-rwxr-xr-x 1 vermario vermario  279 Feb 21 14:18 lagoon-wait-for-user.sh
-rwxr-xr-x 1 vermario vermario 3.1K Feb 21 14:18 lando-entrypoint.sh
-rwxr-xr-x 1 vermario vermario 3.7K Feb 21 14:18 load-keys.sh
-rwxr-xr-x 1 vermario vermario 2.4K Feb 21 14:18 log.sh
-rwxr-xr-x 1 vermario vermario 1.1K Feb 21 14:18 mounter.sh
-rwxr-xr-x 1 vermario vermario  818 Feb 21 14:18 pantheon.sh
-rwxr-xr-x 1 vermario vermario  335 Feb 21 14:18 pantheon-wait-for-user.sh
-rwxr-xr-x 1 vermario vermario 1.9K Feb 21 14:18 proxy-certs.sh
-rwxr-xr-x 1 vermario vermario 2.1K Feb 21 14:18 psh-boot.sh
-rwxr-xr-x 1 vermario vermario 1.2K Feb 21 14:18 psh-build.sh
-rwxr-xr-x 1 vermario vermario 1.8K Feb 21 14:18 psh-clone.sh
-rwxr-xr-x 1 vermario vermario 1.1K Feb 21 14:18 psh-exec.sh
-rwxr-xr-x 1 vermario vermario  313 Feb 21 14:18 psh-fake-rpc.py
-rwxr-xr-x 1 vermario vermario  810 Feb 21 14:18 psh-mysql-helper.sh
-rwxr-xr-x 1 vermario vermario  174 Feb 21 14:18 psh-open.sh
-rwxr-xr-x 1 vermario vermario 6.2K Feb 21 14:18 psh-pull.sh
-rwxr-xr-x 1 vermario vermario 5.9K Feb 21 14:18 psh-push.sh
-rwxr-xr-x 1 vermario vermario 1.8K Feb 21 14:18 psh-recreate-users.sh
-rwxr-xr-x 1 vermario vermario 6.6K Feb 21 14:18 pull.sh
-rwxr-xr-x 1 vermario vermario 5.5K Feb 21 14:18 push.sh
-rwxr-xr-x 1 vermario vermario 1.4K Feb 21 14:18 refresh-certs.sh
-rwxr-xr-x 1 vermario vermario 1.3K Feb 21 14:18 run-elevated.ps1
-rwxr-xr-x 1 vermario vermario 1.6K Feb 21 14:18 setup-ca.sh
-rwxr-xr-x 1 vermario vermario 2.1K Feb 21 14:18 sql-export.sh
-rwxr-xr-x 1 vermario vermario 3.8K Feb 21 14:18 sql-import.sh
-rwxr-xr-x 1 vermario vermario 1.9K Feb 21 14:18 switch.sh
-rwxr-xr-x 1 vermario vermario 4.0K Feb 21 14:18 user-perm-helpers.sh
-rwxr-xr-x 1 vermario vermario 3.3K Feb 21 14:18 user-perms.sh
-rwxr-xr-x 1 vermario vermario  280 Feb 21 14:18 wait-for-user.sh

In case you want to try and reproduce this, one option is to checkout this project at this branch: wunderio/next-drupal-starterkit#180 and run ./setup.sh.

Updating CLI fail on Linux/macOS with permission denied error

❯ lando version
v3.21.0-beta.2 

Os: linux

Hi! When I try to run lando update, I see an available update, but the process does not go through because it cannot write to /usr/share/lando/bin. (Rightly so, that directory and its contents are owned by root on my system.
Output:

❯ lando update
Generating plugin/cli update matrix... done [see table below]

 PACKAGE              STATUS             COMMENT                                                  
 ──────────────────── ────────────────── ──────────────────────────────────────────────────────── 
 @lando/acquia        ✔ Up to date       All good                                                 
 @lando/apache        ✔ Up to date       All good                                                 
 @lando/backdrop      ✔ Up to date       All good                                                 
 @lando/cli           ⚠ Update available https://github.com/lando/cli/releases/tag/v3.21.0-beta.2 
 @lando/compose       ✔ Up to date       All good                                                 
 @lando/core          ✔ Up to date       All good                                                 
 @lando/dotnet        ✔ Up to date       All good                                                 
 @lando/drupal        ✔ Up to date       All good                                                 
 @lando/elasticsearch ✔ Up to date       All good                                                 
 @lando/go            ✔ Up to date       All good                                                 
 @lando/healthcheck   ⚠ Cannot update                                                             
 @lando/joomla        ✔ Up to date       All good                                                 
 @lando/lagoon        ✔ Up to date       All good                                                 
 @lando/lamp          ✔ Up to date       All good                                                 
 @lando/laravel       ✔ Up to date       All good                                                 
 @lando/lemp          ✔ Up to date       All good                                                 
 @lando/mailhog       ✔ Up to date       All good                                                 
 @lando/mariadb       ✔ Up to date       All good                                                 
 @lando/mean          ✔ Up to date       All good                                                 
 @lando/memcached     ✔ Up to date       All good                                                 
 @lando/mongo         ✔ Up to date       All good                                                 
 @lando/mssql         ✔ Up to date       All good                                                 
 @lando/mysql         ✔ Up to date       All good                                                 
 @lando/networking    ⚠ Cannot update                                                             
 @lando/nginx         ✔ Up to date       All good                                                 
 @lando/node          ✔ Up to date       All good                                                 
 @lando/pantheon      ✔ Up to date       All good                                                 
 @lando/php           ✔ Up to date       All good                                                 
 @lando/phpmyadmin    ✔ Up to date       All good                                                 
 @lando/platformsh    ✔ Up to date       All good                                                 
 @lando/postgres      ✔ Up to date       All good                                                 
 @lando/proxy         ⚠ Cannot update                                                             
 @lando/python        ✔ Up to date       All good                                                 
 @lando/redis         ✔ Up to date       All good                                                 
 @lando/ruby          ✔ Up to date       All good                                                 
 @lando/scanner       ⚠ Cannot update                                                             
 @lando/sharing       ⚠ Cannot update                                                             
 @lando/solr          ✔ Up to date       All good                                                 
 @lando/symfony       ✔ Up to date       All good                                                 
 @lando/tomcat        ✔ Up to date       All good                                                 
 @lando/varnish       ✔ Up to date       All good                                                 
 @lando/wordpress     ✔ Up to date       All good                                                 

Lando would like to update 1 package(s) listed above.
DO YOU CONSENT?: y
✖ Lando cannot write to /usr/share/lando/bin!
ERROR ==> An update error occured! Rerun with lando update --debug for more info.
❯ cd /usr/share/lando
❯ ls
bin  docs  lando.png
❯ ls -lh
total 52K
drwxr-xr-x 2 root root 4.0K Feb 20 10:26 bin
drwxr-xr-x 2 root root 4.0K Feb 20 10:26 docs
-rwxr-xr-x 1 root root  42K Feb 17 00:12 lando.png

I am also attaching the result of running the command again with the --debug option:

lando_update_debug_log.txt

"Unsupported config option for services" after update

Lando version: v3.21.0-beta.15
Host: Ubuntu/Mint - Linux 6.5.0-27

Issue: After updating Lando core, rebuilds and destroys all fail. Manually deleting containers/images/volumes in docker does not resolve this, nor does manually removing configuration files in ~/.lando/compose. The projects all started / rebuild successfully prior to this update.

Terminal output:

lando destroy -yv
  lando loading app projectnamehere from config files 0=/media/alex/Data/projectnamehere/.lando.yml +411ms
  lando loading app projectnamehere from config files 0=/media/alex/Data/projectnamehere/.lando.yml +426ms
Preparing to consign projectnamehere to the dustbin of history...
  projectnamehere destroying app...  +1ms
  projectnamehere stopping app...  +103ms
ERROR: The Compose file '/home/alex/.lando/compose/projectnamehere/globals-0.yml' is invalid because:
Unsupported config option for services: 'database'
  lando ERROR Error
    at /home/alex/.lando/plugins/@lando/core/lib/shell.js:158:44
From previous event:
    at Shell.sh (/home/alex/.lando/plugins/@lando/core/lib/shell.js:150:6)
    at dc (/home/alex/.lando/plugins/@lando/core/utils/setup-engine.js:6:16)
    at compose (/home/alex/.lando/plugins/@lando/core/utils/setup-engine.js:26:35)
    at /home/alex/.lando/plugins/@lando/core/lib/router.js:132:28
    at /home/alex/.lando/plugins/@lando/core/lib/router.js:23:74
From previous event:
    at retryEach (/home/alex/.lando/plugins/@lando/core/lib/router.js:23:42)
    at exports.stop (/home/alex/.lando/plugins/@lando/core/lib/router.js:131:43)
    at run (/home/alex/.lando/plugins/@lando/core/lib/engine.js:19:59)
    at /home/alex/.lando/plugins/@lando/core/lib/router.js:31:15
From previous event:
    at exports.eventWrapper (/home/alex/.lando/plugins/@lando/core/lib/router.js:31:4)
    at Engine.engineCmd (/home/alex/.lando/plugins/@lando/core/lib/engine.js:19:104)
    at Engine.stop (/home/alex/.lando/plugins/@lando/core/lib/engine.js:489:17)
    at /home/alex/.lando/plugins/@lando/core/lib/app.js:546:29
    at process.processImmediate (node:internal/timers:476:21)
From previous event:
    at App.stop (/home/alex/.lando/plugins/@lando/core/lib/app.js:546:6)
    at /home/alex/.lando/plugins/@lando/core/lib/app.js:243:22
    at async Object.run (/home/alex/.lando/plugins/@lando/core/tasks/destroy.js:21:9)  +554ms

Lando file for project:

name: projectnamehere
excludes:
  - node_modules
  - modules/contrib
recipe: laravel
config:
  php: '8.2'
  webroot: public
  via: nginx
  xdebug: true
  config:
    php: .lando_config/php.ini
  composer_version: "2.5.5"
  build_as_root:
    - docker-php-ext-install sockets
  overrides:
    environment:
      PHP_IDE_CONFIG: "serverName=lando"
services:
  redis:
    api: 3
    type: redis:4.0.12
    persist: true
    portforward: 32840
    password: womprat-slayer
  mailhog:
    api: 3
    type: mailhog:v1.0.0
  database:
    api: 3
    type: mysql:8.0.20
    portforward: 13315
    creds:
      user: laravel
      password: laravel
      database: projectnamehere
    configs:
      - skip-name-resolve
  meilisearch:
    api: 3
    type: lando
    app_mount: false
    services:
      image: getmeili/meilisearch:v1.3
      command: tini -- /bin/sh -c /bin/meilisearch
      environment:
        - MASTER_KEY=REDACTED
      ports:
        - '7700'
    volumes:
      meilsearch:
    overrides:
      volumes:
        - meilisearch:/meili_data2

I'm unsure how to proceed in diagnosing this further and would hugely appreciate any further advice.

Thanks,
Alex

Can't start docker desktop from WSL2 instance

From a WSL2 instance with Docker being managed by Docker Desktop for Windows, Lando attempts to start docker but cannot because docker doesn't exist as a service within the WSL instance when Docker Desktop is managing things. This means you get stuck in a loop of failed service starts where the task tries repeatedly to start the docker service, prompting you for the password each time. Worse still, you cannot escape the loop with CTRL+C #154

Custom plugins aren't detected since v3.21

After upgrading to v3.21, I'm facing the following kind of error messages:

ERROR ==> Could not find a plugin in /home/myuser/projects/myproject/.lando/plugins/my-plugin

As far as I can see from the code, it's no longer sufficient to provide an index.js for the plugin, meanwhile also a package.json is required, otherwise this error will be thrown.

If this is an intentional change, it should be documented somewhere.

The culprit lines from components/plugins.js:

// throw error if plugin does not seem to exist
    if (!fs.existsSync(path.join(this.root, 'package.json'))) throw new Error(`Could not find a plugin in ${this.root}`); // eslint-disable-line max-len

    // set top level things
    this.location = this.root;
    this.pjson = read(path.join(this.root, 'package.json'));
    this.sourceRoot = this.root;

Maybe it was meant to be 'index.js', not 'package.json'?

Lando starts docker after cache clear on linux

On my WSL2 Ubuntu instance, if I run lando --clear followed by lando --help Lando will attempt to start up docker before running the command. It doesn't do this on Windows so I assume it's not the expected behavior. Especially for commands like lando --help or lando update.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.