# 🛢️ PostgreSQL v Dockeru: Centrální databáze vs. oddělené instance
👉 [[1.1.1 O projektu]]
👉 [[1.1.2 Vlastní digitální svět (přehled článků)]]
## 🛢️ Proč právě PostgreSQL?
Když už máme správně nastavenou infrastrukturu s **Dockerem, Portainerem a reverzní proxy Traefik**, je čas přemýšlet o **databázích**.
[PostgreSQL](https://www.postgresql.org/) je **výkonná open-source relační databáze**, která se hodí jak pro malé projekty, tak pro velké aplikace s miliony záznamů.
✅ **Flexibilita:** Můžete ji použít jako **centrální databázi** pro více aplikací nebo nasadit oddělené instance pro různé služby.
✅ **Výkon a škálovatelnost:** PostgreSQL zvládá velké objemy dat a podporuje **pokročilé indexování, replikaci a paralelní dotazy**.
✅ **Bezpečnost:** Nabízí robustní možnosti řízení přístupů a šifrování dat.
✅ **Podpora pro JSON a NoSQL:** Umožňuje hybridní přístup mezi tradiční relační databází a flexibilním NoSQL modelem.
## 📌 Úvod: Proč potřebujeme databázi v našem ekosystému Dockeru?
Většina aplikací potřebuje někde ukládat data. V našem ekosystému můžeme zvolit:
- **Centrální databázi** pro více aplikací (snazší správa a propojení dat).
- **Oddělené databázové instance** pro každou aplikaci zvlášť (lepší izolace, škálovatelnost).
- **Hybridní přístup** – některé aplikace sdílejí databázi, zatímco jiné mají vlastní instanci.
V tomto článku si ukážeme, jak nasadit PostgreSQL v Dockeru, zajistit **perzistenci dat**, správu uživatelů a propojení s aplikacemi.
![[image_postgresql.png]]
---
## 🔄 Centrální vs. oddělené databáze: Co je lepší?
| Kritérium | Centrální databáze | Oddělené instance | Hybridní přístup |
|--------------------------|-------------------|--------------------|-----------------|
| **Správa dat** | Snazší zálohování, přístup k více aplikacím | Každá aplikace má vlastní správu | Kombinace obou |
| **Výkon** | Může být náročnější na optimalizaci | Lépe škálovatelné individuálně | Balanc mezi izolací a sdílením výkonu |
| **Zabezpečení** | Vyžaduje pečlivější řízení přístupů | Lepší izolace jednotlivých aplikací | Možnost řídit oprávnění na úrovni schémat |
| **Zálohování** | Jednodušší, jedno centrální místo | Každá aplikace musí mít vlastní zálohování | Lze centralizovat nebo oddělit podle potřeby |
**📌 Hybridní přístup:**
Některé aplikace mohou sdílet jednu centrální databázi s oddělenými schématy (`SCHEMA_A`, `SCHEMA_B`), zatímco aplikace s vysokou zátěží či specifickými požadavky mohou mít vlastní oddělenou instanci.
---
## 🚀 Instalace PostgreSQL v Dockeru (s `docker-compose.yml`)
```yaml
version: '3.8'
services:
postgres:
image: postgres:latest
container_name: postgres_db
restart: always
networks:
- digilifehub_network
env_file:
- .env
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
digilifehub_network:
external: true
volumes:
postgres_data:
```
📌 **Perzistence dat:** Používáme `volumes`, abychom neztratili data při restartu.
📌 **Bezpečnost:** Hesla nejsou přímo v `docker-compose.yml`, ale jsou ukládána v `.env` souboru (ten vytvořte ve stejném adresáři).
Vytvořte `.env` soubor:
```ini
POSTGRES_USER=admin
POSTGRES_PASSWORD=supersecurepassword
POSTGRES_DB=main_db
```
---
## 🔗 Propojení PostgreSQL s aplikacemi
📌 **Aplikace musí běžet ve stejné síti (`digilifehub_network`)**
📌 **Připojení z aplikace (např. n8n.io, WordPress, atd.):**
```yaml
DB_HOST: postgres_db
DB_USER: ${POSTGRES_USER}
DB_PASSWORD: ${POSTGRES_PASSWORD}
DB_NAME: ${POSTGRES_DB}
```
---
## 📈 Monitoring a ladění PostgreSQL
📌 **Logy PostgreSQL:**
```sh
docker logs postgres_db --follow
```
📌 **Použití AI pro debugování:**
- **1️⃣ Zkopírujte chybovou hlášku z logů.**
- **2️⃣ Vložte ji do ChatGPT/Gemini a požádejte o diagnostiku a opravu.**
- **3️⃣ AI navrhne řešení.**
---
## 🏁 Závěr a další kroky
✅ **PostgreSQL je nainstalovaná a běží v Dockeru.**
✅ **Zajištěná perzistence dat a bezpečnostní nastavení.**
✅ **Podpora centrální, oddělené i hybridní databázové architektury.**
---
### ⏪ Související články ⏩
> **🔙 Předchozí článek:**
> [[2025-02-06 Traefik (Reverzní proxy pro Docker – správa subdomén a HTTPS)|Traefik reverzní proxy]]
>
> **🔜 Následující článek:**
> [[2025-02-12 Adminer (webový správce databáze)|Adminer (webový správce databáze)]]
#docker #postgresql #osobniDigitalizace #digilifehub