Blog
Docker pro WordPress: Proč izolované kontejnery mění všechno
Jeden klient nemůže shodit druhého. Jedna stránka nemůže nakazit druhou. Toto je architektura hostingové platformy PAGEnza.
Tradiční hosting WordPressu umisťuje více stránek na jeden server. Sdílejí PHP, sdílejí přístup k souborovému systému a často sdílejí databázový server. To je v pořádku, dokud to není – a když to není, je to vážný problém.
PAGEnza poskytuje každou stránku WordPressu ve vlastním Docker kontejneru. Tento příspěvek vysvětluje, co to v praxi znamená a proč je to důležité pro agentury spravující více klientských stránek.
Problém sdíleného hostingu
Na typickém sdíleném hostingovém plánu nebo dokonce na základním VPS s více instalacemi WordPressu:
Konkurence o zdroje: jedna stránka s nárůstem provozu zpomalí všechny ostatní stránky na serveru. Špatně optimalizovaný plugin na stránce A zhoršuje výkon na stránce B.
Bezpečnostní průsak: pokud je jedna instalace WordPressu kompromitována – prostřednictvím zranitelného pluginu, slabého hesla nebo zastaralé verze jádra – útočník, který získá přístup k souborovému systému, může často číst soubory z jiných stránek na stejném serveru.
Konflikty verzí PHP: stránka A potřebuje PHP 7.4 pro starý plugin. Stránka B potřebuje PHP 8.2 pro novější. Na sdíleném hostingu si vyberete jednu.
Vystavení databáze: sdílené databázové servery znamenají, že jedno špatně nakonfigurované oprávnění uživatele může odhalit data jiných stránek.
Docker kontejnery řeší všechny tyto problémy na úrovni infrastruktury.
Co je kontejner vlastně zač
Docker kontejner je lehký, izolovaný proces, který má svůj vlastní:
- Souborový systém (kontejner nevidí soubory mimo své hranice)
- Síťový zásobník (vlastní IP adresu, vlastní porty)
- Prostor procesů (nevidí procesy jiných kontejnerů)
- Limity zdrojů (omezení CPU a paměti)
Sdílí hostitelské jádro s ostatními kontejnery, ale vše nad jádrem je izolované. Není to plnohodnotný virtuální stroj – spustí se během sekund, nikoli minut, a spotřebuje zlomek zdrojů.
Pro WordPress běží jedna stránka v jednom kontejneru: Nginx, PHP-FPM a soubory WordPressu. Databáze běží v samostatném kontejneru, připojeném pouze k danému kontejneru WordPressu.
Jak PAGEnza poskytuje stránku
Když v PAGEnza vytvoříte novou klientskou stránku, zde je to, co se stane za méně než 45 sekund:
- Nový Docker kontejner se spustí ze základního obrazu WordPressu
- WordPress je nakonfigurován s novou databází na sdílené instanci MariaDB (izolované na pověření daného kontejneru)
- Plugin PAGEnza je automaticky nainstalován a aktivován
- Virtuální host Nginx je nakonfigurován s poddoménou klienta
- SSL je vydáno prostřednictvím Let's Encrypt
- Kontejner je registrován v reverzním proxy se správnými pravidly směrování
Klient získá URL jako clientname.pagenza.com, která je živá do 45 sekund od kliknutí na "Vytvořit stránku". Žádná manuální konfigurace serveru, žádné SSH, žádné čekání na DNS (pro poddoménu – šíření DNS vlastních domén je samostatné).
Izolace kontejneru v praxi
Limity paměti: každý kontejner má konfigurovatelný limit paměti. Pokud nekontrolovaný plugin způsobí špičku paměti na stránce jednoho klienta, nemůže spotřebovat paměť přidělenou jiným kontejnerům. Stránka se může zpomalit nebo vrátit 503 – ale neovlivní to ostatní klienty.
Izolace souborového systému: soubory WordPressu klienta A jsou pro kontejner klienta B zcela neviditelné. Kompromitovaný plugin na stránce klienta A nemá cestu k souborům klienta B.
Síťová izolace: kontejnery komunikují pouze prostřednictvím definovaných síťových mostů. Databázový kontejner klienta A přijímá připojení pouze z kontejneru WordPressu klienta A – nikoli z žádného jiného kontejneru v systému.
PHP na kontejner: protože každý kontejner běží s vlastní instancí PHP-FPM, můžete pro různé klienty spouštět různé verze PHP. Starý plugin klienta A, který potřebuje PHP 7.4, běží bez problémů vedle moderního zásobníku klienta B na PHP 8.2.
Vlastní domény
Výchozí nastavení dává každému klientovi poddoménu *.pagenza.com. Pro klienty, kteří chtějí vlastní doménu, je postup následující:
- Klient nasměruje záznam A své domény na IP adresu serveru PAGEnza
- V dashboardu PAGEnza zadáte vlastní doménu
- Konfigurace reverzního proxy se automaticky aktualizuje
- SSL je vydáno pro vlastní doménu prostřednictvím Let's Encrypt
Možnosti siteurl a home WordPressu jsou aktualizovány tak, aby odpovídaly. Z pohledu klienta jeho stránka jednoduše funguje na jeho doméně – žádný přesměrování, žádná poddoména viditelná pro návštěvníky.
Co to znamená pro agentury
Praktický přínos pro agentury provozující více klientských stránek:
Rychlost onboardingu: poskytnutí nové klientské stránky trvá méně než minutu. Žádné nastavení serveru, žádný cPanel, žádná manuální instalace WordPressu.
Oddělení klientů: každá klientská stránka je skutečně izolovaná. Klient, který nainstaluje problematický plugin, ovlivní pouze svou vlastní stránku.
Škálovatelnost: přidání nového klienta nevyžaduje poskytnutí nového serveru. Kontejnerová infrastruktura se škáluje podle kapacity hostitele a přidání další kapacity je záležitostí přidání dalších hostitelských uzlů.
Obnova po havárii: protože je každá stránka kontejnerizovaná, zálohování a obnova funguje na úrovni kontejneru. Obnovení stránky jednoho klienta neovlivní žádné jiné klienty.
Nevýhodou je, že hosting v kontejnerech je dražší na stránku než sdílený hosting. Ale pro agentury, kde spolehlivost stránek a oddělení klientů jsou nediskutovatelné, ekonomika vychází – zejména když se započítají úspory času při poskytování.