this post was submitted on 20 Jul 2023
25 points (96.3% liked)

Selfhosted

40437 readers
623 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 2 years ago
MODERATORS
 

So I'm in the process of (re-) setting up my homelab and unsure about how to handle databases. Many images require a database, which the docker-compose usually provides inside the stack.

Now my question, shall I have 1 database container which is accessed by all containers? Or shall I have a separate container for each service?

For critical services, which shall have as few dependencies as possible I'm already using sqlite or a similar solution.

Also on a sidenote: I have two docker hosts, can I let the containers of 1 hypervisors use the same internal docker network?

TIA!

top 10 comments
sorted by: hot top controversial new old
[–] [email protected] 16 points 1 year ago

I wondered about that myself these days and decided to give each stack its own db. Makes it easier to throw a stack into the bin without having to manually prune the associated databases. I might end up running a database container anyways for tests and side projects and things like that but service stacks get their own db of their choice.

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

The cost of running a db container for each stack is negligible compared to the comfort of not having to clean up your main database container after you just tried some random container. Then you also have different requirements by different containers, each asking for a specific database for whatever reason and lastly you have another level of seperation between your services

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

1 db per stack. Not worth your time to secure, configure and debug one big db.

[–] [email protected] 6 points 1 year ago* (last edited 1 year ago)

One database for many different services could pose a security risk, though it should be extremely low if each service can access only its own database. However, it'd be harder to distribute services across different hosts if you ever decided to do that. Also, different services could require or work better with different database types. I prefer to use separate database containers.

[–] outcide 4 points 1 year ago

Unless you are very constrained on resources, using a database per application is much easier.

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

I agree with the posts above. Db per stack/service.

They are cheap, disposable, ring fenced from causing issues with other dB's, exact version that has been tested on.

The list is endless. We'll, I'm at my end.

Oo. Typically compose has everything you need prewritten including the db.

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

Not only do I prefer separate db for each stack, ideally the db and app are in the same container. Fewer containers to manage and makes the app nice and self-contained.

[–] ruud 1 points 1 year ago (1 children)

Backup / restore gets complicated if you have multiple apps in 1 dB

[–] jsnfwlr 1 points 1 year ago (1 children)

No one said a single DB. You can have multiple DBs in a single container, and then use something like databacker/mysql-backup container which solves the complexity of multiple db backups for mariaDB and MySQL

[–] ruud 2 points 1 year ago

Yes, terminology.. I mean single instance. And although you can create pg_dumps of separate databases, a true (online) backup of separate databases is difficult. Tools like pgbackrest or barman don't support it. (I mainly focus on Postgres)

load more comments
view more: next ›