Hover is a CLI for deploying web applications to AWS Lambda. It containerizes and deploys your app using Docker, CloudFormation, and the AWS SDK.
Laravel PHP is currently supported by Hover. Contributions to help support more web frameworks (PHP or otherwise) are greatly appreciated.
- Multiple stages (dev, sandbox, production, ...)
- Manages each stage separately. You can deploy each stage in a different AWS account.
- Docker-based. Full control over the runtime environment.
- Tests run on the same docker image that gets deployed.
- Can configure multiple queue lambdas for better prioritization management.
- Environment variables are packaged with the code. Forget the 4 KB Lambda environment variables limit.
- Environment secrets are securely encrypted and packaged into the image.
- Deploys from your local/CI machines. From the machine to AWS APIs directly.
- The application and its asset files are served from the same domain.
Taylor Otwell introduced serverless to Laravel in 2019 with the release of Laravel Vapor. Since then, I've seen how serverless has assisted monolithic application developers in scaling their apps without complex infrastructure management.
However, due to strict compliance requirements, using Vapor or any deployment platform was not an option in some cases. Teams developing apps under such constraints were not permitted to share their AWS credentials with a third party. Hover was designed specifically for these teams. It is a small tool that allows you to deploy serverless applications directly from your CI or local machines.
If your team doesn't operate under such compliance rules, go for Vapor. Vapor isn't just a deployment tool, it is a complete platform that provides both a GUI & CLI for managing all AWS resources needed to run a Laravel app on AWS Lambda. It handles databases, Redis cache, SSL certificates, S3 storage, DynamoDB tables, DNS management, Load Balancing and more.
brew tap themsaid/tools
brew install hover
On the releases page, open the latest release and download the binary that matches your OS and architecture.
Let's create a "dev" stage for an application called "Clouder":
hover stage new clouder dev
This command will create two files in the root directory of our project: /.hover/dev.yml
and /.hover/.Dockerfile
. Using these files, we can configure how Hover builds and deploys the stage.
Next, we will build our stage:
hover build dev
This command will add the runtime files required for the app to run on Lambda. It will also generate the Docker images specified in the .Dockerfile
file. More information on the build process is available in this guide.
Now that the build is complete, let's deploy:
hover deploy
This command will upload our asset files to S3 and our Docker image to ECR. It will also deploy a CloudFormation stack that will configure the various AWS resources that will be used to serve our application. More information on the deployment process is available in this guide.
- Getting Started
- Architecture Concept
- IAM Execution Policies
- The Build Process
- The Deployment Process
- The Runtime Environment
- Stage Variables & Secrets
- Working With Queues
- Working With Domains
- Manifest Reference
Hover ships as a binary that uses Docker to build the application, allowing it to support any web framework written in any programming language. For more information on how Hover works, see the architecture concept and runtime environment.