We recently finished our firecracker-based webapp hosting platform.
It's like if Vercel and Docker had a baby: You write VM configurations in a language that looks like a Dockerfile, and every commit creates a preview environment which can be "promoted" to a production site.
Here's an example configuration:
``` FROM vm/ubuntu:18.04 RUN curl -fSsL https://deb.nodesource.com/setup_12.x | sudo -E bash RUN apt-get install nodejs COPY . . RUN npm install RUN npm run build RUN BACKGROUND npm run start EXPOSE WEBSITE localhost:3000 ```
This product combines our firecracker-based hypervisor (200ms cold starts) with a global CDN written in Go (using Caddy for TLS termination)
We can offer everything for free because we charge for the DevOps side (CI/CD & preview environments) - we have no intention of getting users and then upselling people for hosting.
We're obviously very excited about this launch, and would love to hear your feedback.
What are the differences from a Dockerfile?
IIRC it took a long time for Node 18 to be available.
Containers FTW. You can use things in production when the maintainers release to production, not when AWS Lambda has them.
You can run anything the hell you want in AWS Lambda as it is literally just a container. The documentation even shows you how to write your lambda function entirely in a handful of lines of bash using curl to request the job and submit the result.
We haven't had to formalize any policies, but they'll be similar to other cloud free tiers:
- HTTP only (no terabytes of videos or images exclusively)
- No crypto mining
- No phishing sites
- No sending emails, attacking others, etc
We currently do about a million builds a year, so 99% of projects shouldn't cause problems for us.
In particular, you can do things like
RUN BACKGROUND docker-compose up
EXPOSE WEBSITE 8080
This is super important for most use-cases, since otherwise you have to deal with networking and version control.
If you're running in AWS (looks like it), how do I set up private networking with RDS?
Eg in this Django app example they are using PostgreSQL: https://docs.webapp.io/examples/django
[0] https://webapp.io/docs/main
[1] https://webapp.io/docs/examples
[2] https://webapp.io/docs/integrations
Firefox, latest version, no ad blocker enabled. After nosing around in your source a bit, it seems the redirect to https://docs.webapp.io doesn't work for me?
FROM vm/ubuntu:22.04
RUN (install docker)
RUN REPEATABLE docker-compose build
RUN BACKGROUND docker-compose up
EXPOSE WEBSITE localhost:8080
You can also just run entirely non-docker services:
RUN BACKGROUND redis-server
- The DSL will watch which files are used for each build step to skip everything you haven't changed, so builds are much faster - You can use us to clone VMs and run Cypress tests in parallel, then promote one of the clones to a preview environment, and another to a production environment - We're more declarative (in my opinion), we don't have a CLI. Everything is done by editing a Layerfile and git pushing it
TL;DR, we focused on a declarative configuration format to quickly build, fork, and hibernate VMs, where Fly is more focused on building/shipping docker containers (though the products do fill a similar niche)
Might wanna check their article, because you may face the same problems.
If you email me at colin@webapp.io with your GitHub account name, webapp.io account (if any), and the name of the repository, I can take a look for you.
- Access the authenticated user's API Grants complete read/write access to the API, including all groups and projects, the container registry, and the package registry
Why is write access necessary?