# 🛢️ 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