GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak hostovat svou vlastní platformu jako službu (PaaS) s Dokku

Dokku je implementace Platform-as-a-Service (PaaS), kterou můžete hostovat na svém vlastním hardwaru. Dokku používá Docker k automatickému nasazení vašeho kódu, když git push z vašeho terminálu.

Nastavení serveru Dokku vám umožní rychle nasadit nové aplikace pomocí známého pracovního postupu Git. Náklady na hostování mohou být mnohem nižší než komerční řešení PaaS a spravované nabídky Kubernetes. Jakmile je váš server Dokku v provozu, spuštění nové aplikace by mělo trvat jen několik okamžiků.

Začínáme

Dokku podporuje několik způsobů instalace. Při instalaci na holý hardware použijte ke stažení nejnovější verze oficiální bootstrap skript.

wget https://raw.githubusercontent.com/dokku/dokku/v0.24.7/bootstrap.sh
sudo DOKKU_TAG=v0.24.7 bash bootstrap.sh

Bootstrap skript přemění čerstvou instalaci Linuxu na fungující server Dokku. Softwarové závislosti, včetně Dockeru, budou staženy a nainstalovány automaticky. Proces může trvat až 10 minut v závislosti na vašem internetovém připojení.

Dokku můžete spustit jako kontejner Docker. To je ideální, když používáte prostředí, kde je již Docker k dispozici.

docker run 
    --env DOKKU_HOSTNAME=example.com 
    --name doku
    -p 3022:22 
    -p 8080:80 
    -p 8443:443 
    -v /var/lib/dokku:/mnt/dokku 
    -v /var/run/docker.sock:/var/run/docker.sock 
    dokku/dokku:0.24.7

Nahraďte example.com s názvem hostitele, který budete používat pro přístup k vašemu serveru. V tomto příkladu budou porty 80 a 443 svázány s porty vašeho hostitele 8080 a 8443. Port 3022 na vašem hostiteli se namapuje na port 22 v kontejneru. Tento port se používá pro připojení Git+SSH.

Svazek se vytvoří na /mnt/dokku . Zde budou uložena data aplikace Dokku. Zásuvka Docker hostitele je také namontována do kontejneru, takže Dokku může interagovat s démonem Docker a vytvářet nové kontejnery.

Konfigurace Dokku

Po dokončení instalace navštivte v prohlížeči IP adresu svého hostitele. Pokud jste přiřadili Dokku název hostitele, můžete jej zde také použít. Zobrazí se webový instalační program, který vás provede zbytkem nastavení.

Zkopírujte a vložte klíč SSH do pole „Veřejný klíč“. Dokku bude přijímat všechna připojení SSH vytvořená pomocí tohoto klíče. Další klíče můžete přidat později pomocí Dokku CLI.

Musíte také nakonfigurovat název hostitele vaší instalace Dokku, pokud ještě nebyl nastaven. Pokud máte doménu namapovanou ke svému počítači, zadejte ji sem. Jinak můžete použít localhost nebo IP adresu.

Po nastavení názvu hostitele může Dokku automaticky obsluhovat vaše aplikace pomocí jednotlivých subdomén. Pokud nemáte doménu k dispozici, zrušte zaškrtnutí políčka „Použít pojmenování virtuálního hostitele“. Dokku bude místo toho sloužit každé z vašich aplikací na vyhrazeném portu.

Pokud jste nainstalovali Dokku pomocí Dockeru, nastavení webu není podporováno. Při vytváření kontejneru můžete přidat název hostitele nastavením DOKKU_HOSTNAME proměnná prostředí. Chcete-li přidat klíče SSH, musíte se připojit ke kontejneru a použít Dokku CLI:

docker exec -it dokku dokku ssh-keys add my-key < /path/to/key

Jakmile nastavíte název hostitele a přidáte klíč SSH, Dokku by měl být připraven k použití. Další administrace není možná pomocí webového uživatelského rozhraní. S Dokku komunikujete prostřednictvím příkazů Git a CLI.

Nasazování aplikací

Nyní jste připraveni spustit svou první aplikaci! Nasazení Dokku začínají git push . Dokku používá buildpacky (buď Cloud Native nebo Herokuish) k detekci programovacího jazyka vaší aplikace a automatickému vytvoření sestavení.

Dokku také podporuje spouštění docker build přímo, pokud váš projekt obsahuje Dockerfile . Tuto funkci lze použít pouze v případě, že pro váš projekt nejsou k dispozici tvůrci založené na buildpacku. Více informací o přímých sestaveních Dockeru můžete získat v dokumentaci Dokku.

Použití buildpacků znamená, že Dokku klade malá omezení na to, jak je váš projekt vytvořen. Pokud používáte populární jazyk a framework, měli byste být schopni git push vytvořit rozmístění. Zde je příklad základní aplikace React:

mkdir my-app
cd my-app
npx create-react-app .

git remote add dokku [email protected]:my-app
git push dokku master

Poslední dva řádky jsou nejdůležitější. Váš server Dokku je přidán jako vzdálený Git, takže na něj můžete poslat kód. Nahraďte example.com s IP nebo názvem hostitele vaší instalace. Část za dvojtečkou označuje projekt Dokku, na který se má tlačit. Nemusíte jej vytvářet ručně.

Po nastavení dálkového ovladače jste připraveni do něj vložit kód. Příkladový příkaz vloží master větev až do Dokku. Dokku vezme váš projekt, automaticky detekuje vhodný buildpack, vytvoří image Dockeru a nasadí vaši aplikaci.

Připojení domén aplikace

Dokku nasadí vaši aplikaci do subdomény vašeho názvu hostitele. Vlastní doménu můžete připojit pomocí Dokku CLI. Nejprve se ujistěte, že jste nastavili příslušné záznamy DNS.

dokku domains:add my-app example.com

Navštivte example.com bude nyní sloužit vaší my-app nasazení.

Přidání protokolu SSL

Dokku usnadňuje aktivaci SSL pro vaše aplikace. Můžete přidat plugin, který integruje Dokku s Let’s Encrypt. Jakmile je plugin nainstalován, můžete získat certifikáty SSL jediným příkazem.

Nejprve nainstalujte plugin:

dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git

Dále nakonfigurujte plugin Let's Encrypt s vaší e-mailovou adresou. Let’s Encrypt použije tuto adresu k zasílání jakýchkoli upozornění týkajících se vašich certifikátů.

dokku config:set --global no-restart [email protected]

Měli byste přidat úlohu cronu Let’s Encrypt, abyste měli jistotu, že Dokku dokáže automaticky obnovovat vaše certifikáty:

dokku letsencrypt:cron-job --add

Nakonec pro vaši aplikaci povolte Let’s Encrypt:

dokku letsencrypt my-app

Plugin Let’s Encrypt získá certifikát pro pokrytí domén připojených k vaší aplikaci. Certifikát bude automaticky obnoven před vypršením jeho platnosti.

Aktualizace aplikace

Dokku staví na pracovním postupu Git. Aplikaci můžete aktualizovat tak, že provedete změny v kódové základně, vytvoříte potvrzení Git a poté přesunete svou větev do Dokku.

Když Dokku obdrží nový push, použije své buildpacky k vytvoření aktualizovaného kontejneru Docker. Aktuálně běžící kontejner bude po dokončení sestavení nahrazen novým. Aktualizace jsou bez výpadků a jsou plně automatizované.

Trvání procesu sestavení se bude lišit v závislosti na velikosti vaší aplikace a technologiích, které používá. Dokku čeká dalších 10 sekund po dokončení stavby, než bude provoz nasměrován na nové kontejnery. To dává všem bootstrap skriptům šanci na dokončení.

Dokku lze snadno integrovat do systémů kontinuální integrace (CI). Poslední fází v kanálu CI může být git push dokku aktualizovat své živé nasazení.

Správa poboček

Dokku obvykle nasazuje změny provedené v master větev. Pomocí globálního nastavení nebo nastavení pro jednotlivé aplikace můžete použít jinou větev:

dokku git:set --global deploy-branch dokku-deploy

dokku git:set my-app deploy-branch production

S touto konfigurací se Dokku standardně nasadí z dokku-deploy větev. Implementace pro my-app aplikace bude vyrobena z production místo toho.

Přidání dalších funkcí

V Dokku je toho mnohem víc než jen základní nasazení, na které jsme se zde zaměřili. Výchozí distribuce je záměrně zjednodušená. Oficiální a komunitní pluginy lze použít k poskytování služeb, jako jsou databáze a ověřování. To vám umožňuje používat Dokku pro stavové backendy i pro vaše statické frontendy.

Nastavení služby je obecně dvoufázový proces. Vytvoříte instanci služby a poté ji propojíte se svými aplikacemi. Ke každé instanci služby lze připojit více aplikací.

Zde je návod, jak přidat databázi MySQL do aplikace:

dokku plugin:install https://github.com/dokku/dokku-mysql.git

dokku mysql:create demo-db

dokku mysql:link demo-db my-app

Dokku nastaví DATABASE_URL proměnná prostředí uvnitř kontejneru aplikace. K této proměnné můžete přistupovat k načtení připojovacího řetězce MySQL. Použití zásuvných modulů Dokku pro databáze odstraňuje potřebu spravovat další externí databázový server.

Závěr

Docker je řešení PaaS, které vám umožňuje hostovat vaši vlastní aplikační platformu. Jakmile je Dokku v provozu, spuštění nové aplikace je stejně jednoduché jako git push .

Dokku je ve srovnání se službami, jako je Heroku, Amazon Elastic Beanstalk a Google Firebase, příznivý. Podporuje velké množství vývojových technologií a znamená, že nejste vázáni na konkrétního poskytovatele cloudu. Dokku můžete provozovat na levném cloudovém virtuálním počítači nebo jej ponechat na vlastním fyzickém hardwaru.


Docker
  1. Jak nainstalovat a hostovat server OpenVPN pomocí Dockeru

  2. Jak nainstalovat Jenkins pomocí Docker

  3. Jak sdílet obrázky Docker s ostatními

  1. Jak nasadit mikroslužby s Dockerem

  2. Jak nainstalovat Nextcloud s Dockerem na váš Linux Server

  3. Jak samostatně hostit Jitsi Meet with Docker

  1. Jak nasadit aplikace s Rancherem

  2. Jak nasadit kontejner nginx s Dockerem na Linode

  3. Jak a proč používat vzdáleného hostitele dockeru