Dock'n'Roll

Dockā€™nā€™Roll (dockn) is a a Replit-like web-based development and deployment solution that allows users to build and deploy quick web applications using Docker.

Note that this video is slightly outdated: each project now also gets a second directory that is persisted across container restarts (analogous to a Docker volume)

I built it for myself as I wanted an app for deploying quick web servers that I could run on my own self-hosted infrastructure. It consists of a ExpressJS backend (which communicates with the Docker Engine API for managing containers) and web frontend, alongside a Redis database (for storing a mapping of project names to container IDs). I wrote a reverse proxy in NodeJS to expose hosted web servers, but replaced it with a OpenResty config (to support extensions to HTTP, such as WebSockets and Server Sent Events).

Project files can be managed through a web interface, and are built as containers from their Dockerfiles.

Each project gets port 80 exposed through an OpenResty reverse proxy that uses a Lua plugin to lookup a projectā€™s container details from a Redis database.

I am currently hosting an instance of it for myself on my own infrastructure (two servers running at home)

dockn is currently not publicly available, because I donā€™t know if this is something anyone else wants. If youā€™re interested, please let me know! I would be happy to clean up the code and open source it if anyone else wants it.