Distroless is not core to the idea. It’s only a nice to have. The main point is the composability, Declarative design, etc.
Distroless is not core to the idea. It’s only a nice to have. The main point is the composability, Declarative design, etc.
the base image is nodejs
Which has its own dockerfile. My proposed tool would allow using other images as base too, but that is not the problem it is solving.
copy your app
Well you’d have to have it compiled or built if that is required in your case. With my system, the build recipe would be a gentoo ebuild (shell-script-like) that you would just reference.
The example I gave is pretty simple, you’re right. Say in another case, you list the following packages:
nodejs, nginx, vpn-app(wireguard), some-system-monitoring-app, my-app
You could start with a nodejs base or an nginx base, and then write the steps to install the other. You’d also have to make sure to get all the deps if they have them.
You’re unlikely to find a ready image that has all what you want. But with my method, you can compose different ones however you like, rather than having to find an image that matches your exact use case.
I had a feeling nixos would have something, but I avoided it because it seemed more than a day’s worth of learning (and also its a bit opinionated). But I will revisit it one day!
Did not know about apko. I am not attached to distroless, just thought it was a nice to have. So apko might be a reason I don’t pursue this project anymore. Thanks for showing me!
Your comment is very insightful for other reasons too. Thanks a lot :)
The package manager would not be part of the container image. The package manager is only used to build it. The container image will only include the packages the user specifies.
combining portions of images as multi-stage builds
That’s something I am making use of for this, actually :)
What you’re describing not only already exists…
Can you please give an example of a tool that can build a container image by being given only a list of packages it needs to have?
My tool would be as simple as doing something like this:
build-container --packages nodejs-20.1.1, yarn-4.2.2, some-app-i-made-1.0.0
And I would have a container that only has nodejs binary, yarn, and my own app. no package manager or any utils.
Most people use JavaScript for this nowadays, but most commentary also hates on it.
I’ll be real with you. There’s a reason JavaScript keeps being chosen despite the hate. It’s so much easier and the dev experience is much more polished for creating desktop apps.
The reason it’s hated on is that it is running a browser in the background, which people view as too bloated for a desktop app. Moreover, JS tends not to play well with system-wide themeing like GTK or QT.
But in the end, as a developer, you’ll be dealing with a lot of messiness going with anything else. If you’re up for a challenge, do try other things. But if you just want something that works and looks nice, do Js
Do you know where I can find them? I will seed them all
Piracy is cool, but I prefer to use community-driven software rather than ones driven by corporate profits. I prefer a model where many can contribute to it, fork it, and for which making integrations is much easier thanks to its openness.
I tried it about a year ago. I don’t remember why I left it, but I think I did have a couple issues with it related to nvidia. I’ll try it again.
Will Godot be helpful? Given what I’m making is non graphical and I don’t really want to use pre-simulated stuff.
I don’t want to do it absolutely from scratch. I do want something that makes the math easier, but not restrict me in how I simulate something.
So I want something that would give me common functions used in simulations, but not something that gives me “here’s a model for money or person”.
I am simulating a database table as a json list. So a join table would be simulated also as a separate list (or separate json file).
What I described in the comment above is the same thing I originally described, but expanded.
A dependency relation can still be many to many (and in my case, it is). The comment above gives an example to prove it.
Sqlite is nice but the file would not be readable in a plaintext-like format from my understanding.
That’s a good point!
The reason I am using JSON is so I can have a flat file, sorta plaintext. This way, the storage is easily readable by the user without any special tools, and can even be debugged or modified directly, or using a tool like jq
. All this without the need for a heavy database engine, indexing, etc (I am not operating at a large scale). I dont believe MongoDB would be suitable for me based on this, but please let me know if you think I am wrong.
The list would still allow a many-to-many relationship. Let demonstrate:
entity A and entity B both have 2 members: A-1, A-2, B-1, and B-2.
we add a “relations” field to entity A, which is a list of IDs from B, describing the list of B’s that A is related to.
A-1 has the relations field as: [
and A-2 has ][
. ]
As you can see, this is a many-to-many relationship. Each of our entities is tied to multiple entities. So this is many on both sides, hence many to many
Currently, I am storing entities in a JSON array / list. every element in this list corresponds to one instance of that entity.
I could express a many-to-many relationship as just another field in that entity that happens to be a list / array, or I can imitate a SQL join table by creating a separate JSON list to log an instance of that relation.
Are there any benefits to the second approach?
Gitea claims to be working on federation too, which puzzles me that forgejo presents it as a differentiator.
Pulling in mainline gitea changes, I did see. But I didn’t see any notable differences from gitea. Do you know of any?
Please demonstrate how the example I gave above can be done with common scripting tools, such it would mimic the declarative experience I described. I don’t think it is possible as you claim.
Can you please point to where I deflected any questions? I looked and could not find any instances of such.
I actually answered the question “why”, please refer to previous comments. It is also answered in the main post. But I will rephrase and summarize again here: