Wdrożenie nAxiom z obrazów Docker
Przeczytasz w 29 min.
Spis treści
Opisana poniżej metoda wdrażania nAxiom z obrazów Docker jest pomyślana jako szybka ścieżka wdrażania środowisk deweloperskich i testowych. Nie nadaje się ona do wdrażania środowisk produkcyjnych.
Wstęp
Kontenery Docker wymagają systemu operacyjnego Linux. W Windows można uruchamiać dystrybucje Linuksa w ramach podsystemu WSL (Windows Subsystem for Linux). WSL to instalowany osobno komponent Windows. W WSL można uruchamiać wiele instancji (dystrybucji) systemu Linux.
W tym podejściu używany jest silnik Docker Engine, który działa w systemie Linux jako demon, oraz narzędzie do zarządzania kontenerami Portainer (Community Edition). Sam Portainer to aplikacja z przeglądarkowym interfejsem uruchamiana jako kontener Docker.
W Portainerze można obsługiwać wszystkie podstawowe i opcjonalne komponenty środowiska nAxiom, w tym SQL Server, RabbitMQ oraz serwisy i aplikacje nAxiom.
Przyjęty model wdrożenia obejmuje współdzieloną grupę kontenerów (tzw. stack) w której znajdują się:
- SQL Server,
- serwer proxy Traefik
- Homepage: dashboard udostępniający wgląd w podstawowe parametry środowiska oraz linki do wdrożonych programów
- Dozzle: program wyświetlający logi z kontenerów.
Każde środowisko nAxiom jest wdrażane w Portainerze jako osobny stack, który oprócz kontenerów wszystkich serwisów nAxiom zawiera także serwer proxy nginx (kieruje ruchem między serwisami) oraz broker komunikatów RabbitMQ.
Domyślna domena, w której uruchamiane są wszystkie środowiska nAxiom i programy pomocnicze, to zarezerwowana domena testowa localtest.me, która wskazuje zawsze na localhost (127.0.0.1).
Aby maksymalnie uprościć czynności przygotowawcze opracowano skrypty, które sprawdzają wymagania wstępne, w tym status instalacji poszczególnych komponentów oraz dostępność portów wymaganych do działania wdrożenia. W kolejnym etapie są także dostępne szablony, które umożliwiaja wdrożenie środowiska nAxiom przy ograniczeniu do minimum czynności konfiguracyjnych.
Wymagania wstępne
- Pobierz programy WSL-VerifyRequirements.exe oraz WSL-Manager.exe i skopiuj je do folderu roboczego.
- Kliknij w folderze prawym przyciskiem myszy i wybierz polecenie
Otwórz w Terminalu(Win11), aby otworzyć oko PowerShell. - Uruchom skrypt sprawdzający środowisko:
.\WSL-VerifyRequirements.exe - Sprawdź, czy wszystkie wymagania są spełnione. Jeśli nie, wykonaj zalecane polecenia i ponownie sprawdź wymagania. W szczególności:
- Jeśli nie masz zainstalowanej dystrybucji (pkt. 3), uruchom polecenie
wsl --install. Spowoduje ono aktywowanie podsystemu WSL w Windows i zainstalowanie domyślnej dystrybucji Ubuntu. - Jeśli potrzebne porty są zajęte, spróbuj je odblokować przy użyciu podanych komend.
- Jeśli port 80 jest zajęty, zatrzymaj witrynę Default Web Site na serwerze IIS lub cały serwer IIS, jeśli nie zamierzasz go używać.
- Jeśli port 1433 jest zajęty (np. przez lokalny SQL Server), przejdź do kolejnych kroków. Na późniejszym etapie użyjesz innego portu.
- Jeśli nie masz zainstalowanej dystrybucji (pkt. 3), uruchom polecenie
- Uruchom skrypt do zarządzania WSL:
.\WSL-Manager.exe -
Wybierz polecenie
Uruchom skrypt na dystrybucji.Wybierz polecenie
Aktualizuj skrypty, aby pobrać najnowsze wersje skryptów sh. - Uruchom skrypt instal-docker.sh.
- Uruchom skrypt install-portainer.sh.
- Pobierz plik konfiguracji Portainera.
- Uruchomienie Portainera:
- W oknie przeglądarki wpisz adres localhost:9000.
- Rozwiń sekcję
Restore Portainer from backup, kliknijSelect file, wskaż plik konfiguracyjny i kliknij przyciskRestore Portainer. - W oknie logowania podaj nazwę admin i hasło (takie jak domyślne hasło nAxiom).
Automatyczne wdrożenia nAxiom
Zestaw skryptów w programie WSL-Manager zawiera dwie pozycje, które umożliwiają automatyczne wdrożenie środowiska nAxiom:
- naxiom-install.sh wdraża środowisko nAxiom (wersja 1.15.6.1) pod adresem URL nax-init.localtest.me oraz tworzy bazy danych tenantów nax-init-tenantsAdmin i pierwszego tenanta nax-init.
- naxiom-install-and-restore.sh wdraża środowisko nAxiom jak wyżej oraz odtwarza bazę danych z pobieranego pliku backupu. Baza zawiera przykładowe aplikacje DMS.
W programie WSL-Manager wybierz polecenie Uruchom skrypt na dystrybucji, a następnie wybierz jeden z powyższych skryptów.
Szablony Portainer
Konfiguracja programu Portainer odtwarzana z pliku tar.gz podczas pierwszego uruchomienia zawiera link do szablonów stacków, za pomocą których można wdrażać programy w portainerze. Szablony te są dostępne w menu Templates w Portainerze.
Aby wdrożyć szablon, należy go kliknąć, określić zmienne środowiskowe i kliknąć przycisk Deploy the stack.
Wdrożenie komponentów wspólnych
- W Portainerze kliknij kafelek lokalnego środowiska dockerowego (local).
- Kliknij
Templatesw menu. Zostaną wyświetlone predefiniowane szablony przeznaczone do wdrożeń nAxiom. - Kliknij pozycję (A) nAxiom - Global Infrastructure (MSSQL + Traefik + Dozzle); ten stack zawiera komponenty (SQL Server, serwer proxy Traefik, agregator logów Dozzle, panel sterowania Homepage) wspólne dla wdrażanych środowisk nAxiom.
- Skonfiguruj stack:
-
Name: nazwa stacka, na przykład naxiom-common, infrastructure itp. -
MSSQL SA Password: hasło z jakim zostanie utworzony login sa w silniku bazy danych (zanotuj) -
MSSQL Exposed Port: port, pod którym serwer bazy danych będzie dostępny w Windows (nie może być zajęty) - Kliknij przycisk
Deploy the stacki poczekaj aż kontenery zostaną uruchomione. - Wybierz w menu
Stacksi kliknij nazwę stacka, aby wyświetlić działające w nim kontenery, a następnie zanotuj nazwę kontenera SQL Server (np. naxiom-common-mssql-1). Tę nazwę należy podać później jako nazwę hosta SQL Server podczas wdrażania środowiska nAxiom.
-
Po wdrożeniu stacka dostępny jest panel home.localtest.me, z którego można uruchamiać dostępne komponenty, na przykład monitor logów kontenerów Dozzle.
Aby połączyć zainstalowany lokalnie program MSSMS z serwerem działającym w kontenerze, należy użyć następujących parametrów:
Server name: localtest.meLogin: saPassword: <takie jak podane>Encryption: OptionalTrust server certificate: truePonadto, aby pomyslnie odtworzyć bazę danych z backupu w programie MSSMS, w oknie
Restore Database, na karcieFilesnależy zaznaczyć pole wyboruRelocate all files to folder.
Wdrożenie nAxiom
Przed wdrożeniem środowiska nAxiom należy zapewnić dostęp do obrazów dockerowych nAxiom, można to zrobić przez pobranie pliku nAxiom_1.15.x.x.tar.gz z repozytorium pakietów instalacyjnych lub zapewnienie dostępu do wewnętrznego rejestru obrazów (nexus.naxiom.local). W tym przypadku należy skopiować tag obrazów, które mają zostać wdrożone (docker-public > admin > tags).
Aby załadować obrazy lokalnie do Portainera, wykonaj następujące czynności:
- Pobierz na komputer paczkę z żądaną wersją obrazów i wypakuj z niej archiwum tar.gz.
- W Portainerze wybierz
Images>Import(w nagłówku listy obrazów) >Select file, wskaż plik tar.gz i kliknijUpload. - Po wyodrębnieniu obrazy zostaną wyświetlone na liście.
Teraz możesz przejść do wdrożenia nAxiom.
- Kliknij
Templates>Applicationi wybierz pozycję (B) nAxiom - Auto-Init Stack (First Tenant Auto-Creation). - Przewiń do sekcji
Configurationi wpisz wartości zmiennych dla witryny nAxiom:-
Name: nazwa stacka z kontenerami środowiska nAxiom. -
Compose Profiles:-
Full Stack - wszystkie serwisy: tworzy pierwszego tenanta z ustawieniami domyślnymi -
Minimal - bez public api: jak wyżej, ale bez serwisu Public API TenantAdmin - tylko zarządzanie tenantami
-
-
Docker Registry:-
Portainer (lokalnie załadowane obrazy): obrazy załadowane lokalnie (plik tar.gz) -
Nexus Dev (nexus.naxiom.local:5000): wewnętrzne repozytorium obrazów -
Opteam Prod (repo.opteam.pl:5000): produkcyjne repozytorium obrazów
-
-
nAxiom Version: Wersja nAxiom (tag obrazów Docker) -
Domain Name: Nazwa domeny dla aplikacji; stack jest skonfigurowany w taki sposób, że podanie nazwy w domenie loclatest.me (np. naxiom.localtest.me) nie wymaga konfigurowania certyfikatów ani modyfikacji pliku hosts. -
Deployment Type: Typ wdrożenia (PROXY z Nginx lub DIRECT); domyślnie PROXY (read-only). -
MSSQL Server Host: Adres serwera MSSQL (nazwa kontenera ze stacka Global Infrastructure). -
MSSQL TenantsAdmin Database: Nazwa bazy danych tenantów. -
MSSQL Username: Login na serwerze SQL Server (domyślnie sa). -
MSSQL Password: Hasło SQL Server (musi być zgodne z podanym wcześniej) -
MSSQL Connection Timeout: Timeout połączenia SQL w sekundach -
First Tenant Code/Name: Kod i nazwa pierwszego tenanta (np. ‘nAxiom’, ‘demo’). URLPrefix będzie pusty. -
First Tenant Database: Nazwa bazy danych dla pierwszego tenanta. -
First Tenant Culture: Kultura/język pierwszego tenanta. -
First Tenant Admin Email: Email administratora pierwszego tenanta. -
SMTP Server: Serwer SMTP dla wysyłki e-maili. -
SMTP Port: Port serwera SMTP. -
SMTP Username: Użytkownik SMTP (opcjonalnie). -
SMTP Password: Hasło SMTP (opcjonalnie). -
SMTP Enable SSL: Włącz SSL dla SMTP. -
Nginx Version; Wersja obrazu Nginx. -
RabbitMQ Version: Wersja RabbitMQ. -
RabbitMQ Username: Nazwa użytkownika RabbitMQ. -
RabbitMQ Password: Hasło RabbitMQ. 1. Kliknij przyciskDeploy the stack. Pierwsze wdrożenie może potrwać kilka minut, w szczególności, gdy obrazy są pobierane ze zdalnego rejestru. 1. Na panelu home.localtest.me kliknij przycisk logowania do nAxiom.
-
Wskazówki
- Aby zmienić konfigurację stacka, kliknij jego nazwę i kliknij polecenie
Editoru góry strony.- W razie problemów z działaniem stacka można usunąć z niego kontenery i uruchomić go ponownie. Dzięki temu nie będzie konieczna ponowna konfiguracja stacka.
Uwagi końcowe
Używana w tej metodzie konfiguracja domyślna pozwala na wdrażanie środowisk nAxiom w wersjach 1.15.0.0 i nowszych (od momentu wprowadzenie RabbitMQ jako komponentu obowiązkowego). Możliwe jest wdrożenie wielu środowisk nAxiom w różnych wersjach.
Podczas pracy ze środowiskami nAxiom w Portainerze obowiązują takie same zasady, jak podczas pracy w IIS lub innych środowiskach skonteneryzowanych:
- Zmiana wersji wdrożonego środowiska jest możliwa tylko na wersję nowszą.
- Korzystanie z backupów bazy danych oraz migracja aplikacji musi spełniać kryteria kompatybilności na poziomie bazy danych (patrz odpowiednie informacje o wersji).
Aktualizacja środowiska nAxiom
Procedura aktualizacji wersji dla działającego środowiska sprowadza się do wykonania następujących kroków:
- W menu Portainera wybierz polecenie
Stacks, a następnie kliknij nazwę stacka witryny nAxiom, którą chcesz zaktualizować. - Kliknij przycisk
Editoru góry wyświetlonej strony i rozwiń sekcjęEnvironment variables. - Zależnie od źródła obrazów nowej wersji nAxiom, zmień lub pozostaw bez zmian wartość zmiennej NAX_VERSION_REPO.
- Wpisz tag obrazów nowej wersji jako wartość zmiennej NAX_VERSION.
- Kliknij przycisk
Update the stackna samym dole strony.