16GB is tight for production databases.

Depends on your workload, but for anything serious, 16GB is tight.

MySQL and PostgreSQL are both memory-hungry when they’re doing real work. They cache data, hold connections, run query plans. Two of them in containers means you’re sharing that 16GB between the databases, the container runtime, and whatever else is on the host. You’ll hit swap fast if you’re not careful.

For a dev environment or a low-traffic staging server? Probably fine. You can tune each database to use less memory. But if you’re running even moderate traffic — like a few hundred connections or queries that touch large tables — 16GB will feel cramped. You’ll be fighting OOM kills and slow queries.

I’d aim for 32GB as a comfortable floor for two production databases. If you can’t, make sure you know exactly what each one needs and limit memory per container. Then watch free like a hawk.

[Insert final thought if natural] This is one of those places where throwing RAM at the problem actually works.

Explore

Explore

Explore