Printer icon

Wdrożenie nAxiom z obrazów Docker

Przeczytasz w 22 min.

Spis treści

  1. Wstęp
  2. TL;DR
  3. Sprawdzenie wymagań
  4. Konfiguracja środowiska Linux
  5. Uruchomienie Portainera
  6. SQL Server i komponenty pomocnicze
  7. Obrazy nAxiom
    1. Obrazy lokalne
    2. Rejestr obrazów
  8. Wdrożenie nAxiom
  9. Uwagi końcowe
    1. Aktualizacja środowiska nAxiom

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.

Ponadto w proponowanej metodzie 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.

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 późniejszym etapie są także dostępne szablony, które umożliwiaja wdrożenie środowiska nAxiom przy ograniczeniu do minimum czynności konfiguracyjnych.

W następnej sekcji przedstawiono szybką ścieżkę wdrożenia. Bardziej szczegółowe opisy poszczególnych kroków znajdują się w dalszej części artykułu.

TL;DR

  1. Pobierz plik skryptów, rozpakuj i uruchom PowerShell w folderze ze skryptami.
  2. Uruchom skrypt sprawdzający środowisko:
    .\WSL-VerifyRequirements.exe
    
  3. 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.
  4. Uruchom skrypt do zarządzania WSL:
    .\WSL-Manager.exe
    
  5. Wybierz polecenie Uruchom skrypt na dystrybucji, następnie wybierz dystrybucję i wybierz skrypt instal-docker.sh.
  6. Ponownie wybierz polecenie Uruchom skrypt na dystrybucji, dystrybucję i skrypt install-portainer.sh.
  7. Pobierz plik konfiguracji Portainera. Po pobraniu usuń rozszerzenie .bin z nazwy pliku.
  8. Uruchomienie Portainera:
    • W oknie przeglądarki wpisz adres localhost:9000.
    • Rozwiń sekcję Restore Portainer from backup, kliknij Select file, wskaż plik konfiguracyjny i kliknij przycisk Restore Portainer.
    • W oknie logowania podaj nazwę admin i hasło (takie jak domyślne hasło nAxiom).
  9. Wdrożenie „infrastruktury”:
    • W Portainerze kliknij kafelek lokalnego środowiska dockerowego (local).
    • Kliknij Templatesw menu. Zostaną wyświetlone trzy predefiniowane szablony przeznaczone do wdrożeń nAxiom.
    • Kliknij pozycję nAxiom - Global Infrastructure (MSSQL + Traefik + Dozzle); ten stack zawiera kontenery pomocnicze dla nAxiom (SQL Server, serwer proxy Traefik, agregator logów Dozzle, panel sterowania Homepage).
    • Skonfiguruj stack:
      • Name: nazwa stacku, na przykład 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 stack i poczekaj aż kontenery zostaną uruchomione.
    • Wybierz w menu Stacks i kliknij nazwę stacku, aby wyświetlić działające w nim kontenery, a następnie zanotuj nazwę kontenera SQL Server (np. common-mssql-1). Tę nazwę należy podać później jako nazwę hosta SQL Server.
  10. Wdrożenie nAxiom:
    • 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 kliknij Upload.
    • W Portainerze z menu Templates > Application wybierz pozycję nAxiom - Auto-Init Stack (First Tenant Auto-Creation).
    • Przewiń do sekcji Configuration i wpisz wartości zmiennych dla wdrażanej witryny nAxiom.
    • Kliknij przycisk Deploy the stack i poczekaj aż kontenery zostaną uruchomione.
  11. Uruchom panel kontrolny dla stacków wdrożonych w kontenerze: home.localtest.me.

Sprawdzenie wymagań

Uruchom skrypt sprawdzający wymagane komponenty. W terminalu Powershell wpisz:

.\WSL-VerifyRequirements.exe

Program wyświetli wynik sprawdzenia z ewentualnymi zaleceniami:

W przykładzie pokazanym na ilustracji skrypt nie wykrył zainstalowanej dystrybucji systemu Linux. Należy skopiować wyświetlone polecenie do okna terminala i uruchomić je.

wsl --install -d Ubuntu

Zostanie wyświetlony monit o podniesienie uprawnień, a po chwili konieczne będzie podanie nazwy i hasła do domyślnego konta użytkownika w instalowanym systemie.

W pokazanym przykładzie skrypt wykrył, że port 80 jest zajęty. Ten port jest używany zwykle przez domyślną witrynę serwera IIS, Default Web Site, którą można zatrzymać poleceniem:

Stop-WebSite -Name "Default Web Site"

Użycie tego polecenia wymaga uruchomienia terminalu PowerShell z uprawnieniami administratora. Alternatywnie witrynę można zatrzymać w programie Menedżer internetowych usług informacyjnych.

Po zainstalowaniu dystrybucji Ubuntu i zwolnieniu portu można pownonie uruchomić skrypt weryfikacyjny.

Konfiguracja środowiska Linux

Uruchom drugi z dostarczonych skryptów:

.\WSL-Manager.exe

Skrypt wyświetli proste menu użytkownika obsługiwane przy użyciu klawiszy strzałek, Enter i Esc.

Skrypt zawiera polecenia umożliwiające zarządzanie dystrybucjami, zarządzanie podsystemem WSL oraz uruchamianie skryptów w domyślnej dystrybucji systemu Linux.

  • Wybierz polecenie Utrzymuj aktywny WSL, aby podsystem WSL nie był wstrzymywany przez system Windows w przypadku bezczynności, co uniemożliwiałoby działanie środowisk nAxiom w wdrożeniach skonteneryzowanych. Dodatkowo to polecenie spowoduje, że podsystem WSL będzie automatycznie uruchamiany przy starcie systemu Windows.
  • W przypadku restartowania podsystemu WSL dystrybucja Linuksa zostaje zatrzymana i konieczne jest jej uruchomienie.

Jeśli masz w podsystemie WSL uruchomione dystrybucje Linuksa (co najmniej jedną), wybierz z menu polecenie Uruchom skrypt na dystrybucji, następnie wybierz dystrybucję i wybierz skrypt instal-docker.sh.

W trakcie działania skryptu należy podać hasło użytkownika w systemie Linux. Na koniec skrypt informuje, że aby dokonane zmiany (dodanie użytkownika do grupy docker) odniosły skutek, nalezy ponownie uruchomić podsystem WSL (co można zrobić w oknie skryptu WSL-Manager.exe).

Ponownie wybierz z menu polecenie Uruchom skrypt na dystrybucji, dystrybucję i skrypt install-portainer.sh. Po uruchomieniu skryptu w nowym oknie i podaniu hasła Portainer zostanie zainstalowany. Na koniec zostaną wyświetlone podstawowe informacje.

Uruchomienie Portainera

Podczas pierwszego logowania należy utworzyć konto użytkownika, a następnie wstępnie skonfigurować program. Alternatywnie, można wczytać zarchiwizowaną konfigurację programu z wskazanego pliku tar.gz:

  1. Pobierz plik konfiguracji Portainera. Po pobraniu usuń rozszerzenie .bin z nazwy pliku.
  2. W oknie przeglądarki wpisz adres localhost:9000, następnie rozwiń sekcję Restore Portainer from backup, kliknij Select file, wskaż plik konfiguracyjny i kliknij przycisk Restore Portainer.
  3. W oknie logowania podaj nazwę admin i hasło (takie jak domyślne hasło nAxiom).

SQL Server i komponenty pomocnicze

  1. Na wyświetlonej stronie głównej programu kliknij kafelek lokalnego środowiska dockerowego (local).

  2. Kliknij pozycję menu Templates. Zostaną wyświetlone trzy predefiniowane szablony przeznaczone do wdrożeń nAxiom.

  3. Kliknij pozycję nAxiom - Global Infrastructure (MSSQL + Traefik + Dozzle); jest to szablon stacku (grupy kontenerów) w Portainerze; ten stack zawiera kontenery pomocnicze dla nAxiom (SQL Server, serwer proxy Traefik, agregator logów Dozzle, panel sterowania Homepage). Ten stack będzie współużytkowany przez wszystkie środowiska nAxiom wdrażane w Portainerze.
  4. Skonfiguruj stack:
    • Name: nazwa stacku, na przykład 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)
  5. Kliknij przycisk Deploy the stack i poczekaj aż kontenery zostaną uruchomione.
  6. Wybierz w menu Stacks i kliknij nazwę stacku, aby wyświetlić działające w nim kontenery, a następnie zanotuj nazwę kontenera SQL Server (np. common-mssql-1). Tę nazwę należy podać później jako nazwę hosta SQL Server.

Możesz wpisać w przeglądarce adres home.localtest.me, aby wyświetlić stronę z przyciskami umożliwiającymi wyświetlanie stron serwisów uruchomionych w Portainerze. Po wdrożeniu nAxiom, na tej stronie będą także linki do uruchomienia witryny.

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.me - Login: sa - Password: <takie jak podane> - Encryption: Optional - Trust server certificate: true

Obrazy nAxiom

W kolejnym kroku będzie wdrażany stack środowiska nAxiom. Do jego wdrożenia potrzebne są obrazy, które można załadować lokalnie do Portainera lub pobrać firmowego repozytorium obrazów. Wyboru dokonuje się na etapie konfiguracji stacka przed wdrożeniem, wcześniej jednak wymagane są pewne czynności przygotowawcze.

Obrazy lokalne

  1. Pobierz na komputer paczkę z żądaną wersją obrazów i wypakuj z niej archiwum tar.gz.
  2. W Portainerze wybierz ‘Images’ > ‘Import’ (w nagłówku listy obrazów) > ‘Select file’ i wskaż plik tar.gz.

Program wyodrębni obrazy i załaduje je do lokalnego repozytorium. Zanotuj tag wyodrębnionych obrazów (część nazwy po dwukropku, zwykle numer wersji)

Rejestr obrazów

W intrancie Opteam działa serwer nexus.naxiom.local (dostępny z zewnątrz przez VPN), który można wskazać w Portainerze jako źródło obrazów. Aby jednak można było z niego korzystać, należy wpisać go na listę rejestrów niezabezpieczonych w konfiguracji usługi Docker ze względu na to, że używa samopodpisanego certyfikatu.

Można do tego użyć gotowego skryptu uruchamianego przez WSL-Manager poleceniem Uruchom skrypt na dystrybucji.

W przypadku korzystania z tego rejestru, należy także zwrócić uwagę na tagi pobieranych obrazów. Aby zobaczyć jakie obrazy są dostępne, należy uruchomić rejestr w przeglądarce (https://nexus.naxiom.local/), kliknąć katalog docker-public, następnie katalog dowolnego serwisu nAxiom, np admin i wejść do katalogu tags. Zostanie wyświetlona lista tagów dostępnych obrazów nAxiom. Taki tag należy następnie podać w konfiguracji stacku.

Wdrożenie nAxiom

  1. W Portainerze z menu Templates > Application wybierz pozycję nAxiom - Auto-Init Stack (First Tenant Auto-Creation); ten szablon uruchamia kontery serwisów nAxiom, zależnie od wybranego profilu wdrożenia.

  2. Przewiń do sekcji Configuration i 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): aby załadować obrazy do lokalnego repozytorium Portainera; patrz opis powyżej.
      • Nexus Dev (nexus.naxiom.local:5000): wewnętrzne repozytorium obrazów; patrz opis powyżej.
      • 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.
  3. Kliknij przycisk Deploy the stack. Pierwsze wdrożenie może potrwać kilka minut, w szczególności, gdy obrazy są pobierane ze zdalnego rejestru.

Po pomyślnym wdrożeniu stacka wpisz w przeglądarce home.localtest.me i używaj tej strony jako panelu kontrolnego dla swojego wdrożenia.

  • Aby zmienić konfigurację stacku, kliknij nazwę stacku i kliknij polecenie Editor u 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:

  1. Zmiana wersji wdrożonego środowiska jest możliwa tylko na wersję nowszą.
  2. 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:

  1. W menu Portainera wybierz polecenie Stacks, a następnie kliknij nazwę stacku witryny nAxiom, którą chcesz zaktualizować.
  2. Kliknij przycisk Editor u góry wyświetlonej strony i rozwiń sekcję Environment variables.
  3. Zależnie od źródła obrazów nowej wersji nAxiom, zmień lub pozostaw bez zmian wartość zmiennej NAX_VERSION_REPO.
  4. Wpisz tag obrazów nowej wersji jako wartość zmiennej NAX_VERSION.
  5. Kliknij przycisk Update the stack na samym dole strony.

Copyright © 2025 OPTEAM SA. Theme Copyright © 2017-2020 Patrick Marsceill. Distributed by an MIT license.