Následující návod řeší situaci, kdy nasazujeme aplikaci u klienta na jeho serverech, ne u nás. Pro instalaci systému na našich serverech, je jiný návod🔒.
Předpokládáme, že instalujeme aplikaci, která je dockerizovaná, tedy existuje docker-compose.yml soubor s definicí stacku.
Předpokládáme, že aplikace byla v minulosti otestovaná a běžela v testovacím prostředí také v dockeru.
Předpokládáme, že aplikace poběží na samostatné doméně. Kterou registrujeme my a nebo klient.
Předpokládáme, že bude třeba pořešit https.
Koupit server, vybrat vhodnou variantu. K serveru potřebujeme přístup na roota, přístup přes ssh. To potřebujeme pro prvotní instalaci, pro automatické nasazování a pro následnou správu.
Nastavit na IP adresu serveru doménu v DNS. K serveru budeme dále přistupovat přes hostname a ne přes IP adresu.
Na serveru vytvořit SSH jeho vlastní klíče (ssh-keygen)
Přidat vlastní klíče do .ssh/authorized_keys , abysme se tam jako admini dostali.
Doplníme později
Na serveru nainstalovat a spustit certbot, vytvořit certifikáty.
Pokud je server čistý a nic na něm neběží, nabízí se varianta, kdy si certbot spustí svůj lokální web server a přes ten dojde k ověření.
Certbot nezná název domény, je třeba mu ho zadat.
Certbot uloží certifikáty do /etc/letsencrypt
Pokud se jedná o první nasazení do produkce, je možné, že neexistuje komponenta pro web.
Web zajišťuje zakončení https, automatické obnovování certifikátů, reverzní proxy do backendu a dalších komponent.
V některých případech běží v komponentě webu adminer.
Web se kopíruje z jiných projektů, je třeba změnit hostname, aktualizovat endpointy reverzní proxy.
Na serveru nainstalovat docker
Aplikaci instalujeme do složky v home adresáři roota. Je to proto, aby ji neznalý admin snadno našel.
Vytvořit produkční verzi docker-compose.yml
Vytvořit účet produkčního serveru v docker repozitáři - přes htpasswd. Protože každý server má svůj. (V tuto chvíli ještě neřešíme omezení serveru jen k images daného projektu, je to bezpečnostní riziko)
Přihlásit se na serveru do repozitáře s novým přístupem, ručně zkusit stáhnout docker image
Dát na server README a do něj napsat přístupové klíče. Aktualizovat README.
Ověřit, že projde "docker compose pull"
Vytvořit skript deploy.sh
Do .ssh/authorized_keys přidat public klíč repozitáře / pipeline. Kromě klíče samotného přidáme i omezení na jeden jediný příkaz, který smí pipeline spustit.
Upravit Bitbucket pipeline - změnit, kde se volá deploy