Michael-Stokoe / hover

CLI for deploying web applications to AWS Lambda

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hover

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.

Features

  • 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.

Motivation

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.

Installation

Homebrew

brew tap themsaid/tools
brew install hover

Manual download

On the releases page, open the latest release and download the binary that matches your OS and architecture.

Usage

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.

Documentation

Contributing

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.

About

CLI for deploying web applications to AWS Lambda

License:MIT License


Languages

Language:Go 67.0%Language:PHP 30.6%Language:Dockerfile 1.5%Language:Shell 1.0%