Multilaravel

I have a Laravel application with a few dependencies, but it is enough to require almost 200MB on disk. I suppose this is the price for convenient dependencies installation and upgrade...

This application has to be hosted in multiple instances, but it seems not a viable solution to duplicate everything for all of them. So, I've managed to convince a single instance to act in different ways accordly to the web domain from it is reached.

In bootstrap/app.php, just below $app initialization, I've added

if (true) { // this is just to enable and disable the multi-instance setup easily, in different deployments
    $instance = substr($_SERVER['SERVER_NAME'], 0, strpos($_SERVER['SERVER_NAME'], '.'));
    $env =  ('.env.' . $instance);
    $app->loadEnvironmentFrom($env);
}

That's it. The application will load .env.foo, .env.bar or .env.baz when accessed from foo.example.com, bar.example.com or baz.example.com, finding different configurations about the backend database and similar local options.

I've also introduced a custom version of storage_path() function so to obtain different paths for different instances, in storage/foo, storage/bar and storage/baz.

I've still to figure out how to handle php artisan commands (above all: the migrate command), but I guess a good shell script iterating all the different .env.* will do the job.