this post was submitted on 15 Oct 2023
94 points (96.1% liked)

Selfhosted

40132 readers
683 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

For the last two years, I've been treating compose files as individual runners for individual programs.

Then I brainstormed the concept of having one singular docker-compose file that writes out every single running container on my system... (that can use compose), each install starts at the same root directory and volumes branch out from there.

Then I find out, this is how most people use compose. One compose file, with volumes and directories branching out from wherever ./ is called.

THEN I FIND OUT... that most people that discover this move their installations to podman because compose works on different versions per app and calling those versions breaks the concept of having one singular docker-compose.yml file and podman doesn't need a version for compose files.

Is there some meta for the best way to handle these apps collectively?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 8 points 1 year ago (2 children)

The best way is to use Podman's Systemd integration.

[–] [email protected] 4 points 1 year ago (3 children)

This is what I use whenever I make my own services or am using a simple service with only one container. But I have yet to figure out how to convert a more complicated service like lemmy that already uses docker-compose, so I just use podman-docker and emulate docker-compose with podman. But that doesn't get me any of the benefits of systemd and now my podman has a daemon, which defeats one of the main purposes of podman.

[–] [email protected] 7 points 1 year ago (1 children)

Just forget about podman-compose and use simple Quadlet container files with Systemd. That way it is not all in the same file, but Systemd handles all the inter-relations between the containers just fine.

Alternatively Podman also supports kubernetes configuration files, which is probably closer to what you have in mind, but I never tried that myself as the above is much simpler and better integrated with existing Systemd service files.

[–] [email protected] 1 points 1 year ago (1 children)

Quadlet

Requires podman 4.4 though

[–] [email protected] 1 points 1 year ago (1 children)

No, from that version on, it is integrated in Podman, but it was available for earlier versions as a 3rd party extension as well.

But if you are not yet on Podman 4.4 or later you should really upgrade soon, that version is quite old already.

[–] [email protected] 1 points 1 year ago

you should really upgrade soon

Debian stable has podman 4.3 and 4.4 is not in stable-backports

[–] [email protected] 6 points 1 year ago (1 children)

Podman with systemd works better if you just do your podman run command with all the variables and stuff and then run podman generate systemd.

Podman compose feels like a band aid for people coming from docker compose. If you run podman compose and then do podman generate systemd, it will just make a systemd unit that starts podman compose. In my experience having all of the config stuff in the actual systemd unit file makes your life easier in the long run. Fewer config files the better I say.

[–] [email protected] 5 points 1 year ago (1 children)

It's even simpler now that Quadlet is integrated in Podman 4.x or later.

[–] [email protected] 2 points 1 year ago

Oh yeah I remember reading some stuff about that but didn't dig too deep. I'll have to check it out again

[–] [email protected] 2 points 1 year ago (1 children)

You can use podman pods and generate the systemd file for the whole pod.

[–] [email protected] 1 points 1 year ago

But how do I convert the docker-compose file to a pod definition? If I have to do it manually, that's a pass because I don't want to do it again if lemmy updates and significantly changes it's docker-compose file, which it did when 0.18.0 came out.

[–] [email protected] 3 points 1 year ago (2 children)

doesn't systemd come with it's own container thingy?

[–] [email protected] 3 points 1 year ago

You're probably thinking about systemd-nspawn. Technically yes they're containers, but not the same flavour of them. It's more like LXC than Docker: it runs init and starts a full distro, like a VM but as a container.

[–] [email protected] 0 points 1 year ago

Nope, but it integrates very well with Podman.