I dunno, I enjoy not having to install 500 libraries on my system just to test an app. Also upgrading those libraries without butchering my system is also nice. Not to mention rebuilding a system is really fast. Too many pros outweigh the cons
A developer must have had a working config at some point to create the Dockerfile. Providing literally only the Dockerfile is usually just a sign of throwing hands up and saying "It's too hard!".. you should be able to package for at least one platform that isn't Docker. That's just app development, or at least it was until recently.
[0] https://github.com/photoprism/photoprism/blob/develop/docker...
I'm not sure if you perused the docker files for this repo, but imho there is nothing simple about them
Edit:
I was curious so I dug into them a bit and found that the dockerfile references a develop docker image. There is a second docker file to see how that base image is built. In the steps to build that base image, we grab some .zip files from the web for the AI models. We install go, nodejs, mariadb, etc for quite a few deps, and then there is also a substantial list of packages installed. One step also does:
apt-get update && apt-get -qq dist-upgrade
Which seems a bit iffy to me. Each step calls a script which in turn has its own steps. Overall, I'd say the unfurled install script would be quite long and difficult to grok. Also, I'm not saying any of this is "bad," but it is complex.The nonsensical one would be do-release-upgrade.
The only correct way is to either rebuild the base image from scratch or just fetch a new base image. My suggestion would be the latter, just run docker pull again for the baseimage and use that, without running update.
Docker is the one thing that works on MANY flavors of Linux.
If I want to provide a tool I want to spend my time on building the tool, not building an rpm, a snap, a deb, ...
The Docker build process is significantly easier. For example, I can just pull in NodeJS 20. I can't do that on Ubuntu. It's not available on packages.ubuntu.com.
Building a deb/snap/rpm is a whole other language to understand how dependencies are set up.
And then I need to test those. I've never even ran CentOS.
Requires: openjdk=20, opencv=4.5
I’m assuming openjdk is versioned correctly and the name of the opencv package is opencv. I’m also assuming openjdk, replace openjdk with your jdk package name.You would put this line in your rpm .spec file. Do you really think the above line is hard? Maybe the difficulty you have is in never have touched rpm. Start here: http://ftp.rpm.org/max-rpm/index.html
None of that has to do with the difficulty of rpm spec, but entirely with organizational planning. You do plan while building software.. right?
Also github does the exact same thing but with deb. It works in the real world. Quite well, too!
But yeah, it's even fully integrated into NixOS options now. You can set up a default install with one line: https://search.nixos.org/options?query=photoprism
General question: does this have import from google photos? Please don't make me go through the google takeout pain.
Docker is much less manageable locally than, say, systemd or supervisor.
The only thing (which is something) that docker has going for it is that it's cross platform. But the same argument can be made for writing apps using electron. If you're going to do that, fine, but acknowledge the compromise. It's not better.
Now I just stick to debian packages.