I have made an advanced and complex library/framework in PHP. Currently, if I wanted to put this on a new computer, I would have to perform (in broad terms) these manual steps:
- Install PHP CLI.
- Install PostgreSQL.
(Already these two steps are highly involved with tons of fiddling, unthinkable to have somebody else do who isn't already some sort of expert.)
- Unzip my library and application code to some dir.
- Configure all of this according to detailed instructions.
- Finally locate and run a specific script to start up the "engine", meaning my master loop PHP CLI script.
I can do this myself, but I would never in a million years expect anyone else to get this right. I'd love for them to just have to "install" a single, self-contained EXE which immediately starts up my master loop PHP CLI script by somehow embedding both PHP and PostgreSQL and everything set up just to make it dead-simple for the user to run it with zero configuration. Security updates are a major issue, of course, so I'd probably frequently re-distribute this single EXE, or even have the system auto-update itself by fetching it and reloading itself.
But how would this be done in practice, if it's even possible at all? I can see at least two major problems:
- PostgreSQL has no "embedded mode". I and others have requested this for years, but they seem unwilling to do it. SQLite does, but is so crippled and different from PG that I'd have to entirely redesign my entire system, which is not an option. It was made for PostgreSQL as a core component from the ground up.
- I am aware of the existence of Docker, and suspect that it will be mentioned/suggested, but even though I consider myself a "power user" and "programmer" (I'd better be, having spent most of my life in front of this machine...), I just cannot seem to understand how to actually use Docker to do anything. It's like my brain is incompatible with that software or something. I feel the same about Blender and Unity. But not about other complex software. I can't explain it.
Is this just yet another of those things that are "just not gonna happen"? Or is there some simple, nice way to accomplish this?
I don't have any money to spend on this.