Przejdź do głównej zawartości

Instalacja

Postępuj zgodnie z poniższymi krokami, aby pomyślnie zainstalować i uruchomić projekt.

Wymagania:

  • Docker, Docker Compose
  • Zalecany system operacyjny: Ubuntu / dowolna dystrybucja Linuksa
  • Na Windowsie: uruchom skrypt za pomocą Git Bash

Pakiet instalacyjny​

.env​

Ten plik zawiera zmienne środowiskowe używane przez Dockera i aplikację. Przykładowa zawartość:

REMOTE_HOST=app.example.com
GRAFANA_PORT=3000
BACKEND_PORT=9983
FRONTEND_PORT=8080

docker-compose.yml​

Ten plik definiuje usługi Dockera, porty, wolumeny i zmienne środowiskowe. Wartości z pliku .env są używane w konfiguracji.

install.sh​

To skrypt bash, który automatyzuje proces instalacji i konfiguracji. Prosi o niezbędne dane i uruchamia kontenery Dockera.

HTTPS i certyfikaty frontendu​

HTTPS jest obsługiwany wewnątrz kontenera gf-frontend przez serwer Nginx. Certyfikaty nie są umieszczane w obrazie Dockera. Należy dostarczyć je na serwerze, na którym uruchamiany jest pakiet instalacyjny.

1. Przygotuj certyfikat i klucz prywatny​

W katalogu zawierającym docker-compose.yml utwórz katalog certs:

mkdir -p certs

Umieść w nim dwa pliki w formacie PEM:

certs/
├── _.gifrost.com.certificate.pem # certyfikat serwera
└── _.gifrost.com.key # odpowiadający mu klucz prywatny

Jaki certyfikat jest potrzebny?​

Wymagane są dwa pasujące do siebie pliki w formacie PEM:

  • _.gifrost.com.certificate.pem — certyfikat serwera;
  • _.gifrost.com.key — odpowiadający certyfikatowi, nieszyfrowany klucz prywatny.

Nazwy plików są konwencją przyjętą w pakiecie instalacyjnym i nie określają zakresu certyfikatu. Pole SAN certyfikatu musi obejmować nazwę ustawioną jako REMOTE_HOST — bezpośrednio albo przez wpis wildcard. Na przykład dla REMOTE_HOST=app.example.com pole SAN może zawierać app.example.com albo *.example.com.

Skąd uzyskać certyfikat?​

Dostępne są trzy typowe rozwiązania:

  • Firmowy urząd certyfikacji (CA) — dla wdrożenia w sieci wewnętrznej poproś administratora PKI/IT o certyfikat serwera i klucz prywatny w formacie PEM.
  • Publiczny urząd certyfikacji — dla publicznej nazwy DNS skorzystaj z komercyjnego dostawcy certyfikatu.
  • Certyfikat samopodpisany — używaj go wyłącznie do testów.
Certyfikat samopodpisany do testów​

Poniższe polecenie tworzy certyfikat ważny dla app.example.com:

openssl req -x509 -nodes -newkey rsa:2048 -sha256 -days 365 -keyout certs/_.gifrost.com.key -out certs/_.gifrost.com.certificate.pem -subj "/CN=app.example.com" -addext "subjectAltName=DNS:app.example.com"

Zastąp app.example.com rzeczywistą wartością REMOTE_HOST.

Uwaga

Certyfikat samopodpisany nie jest domyślnie zaufany przez przeglądarki. Nadaje się do testów; w produkcji użyj certyfikatu wystawionego przez zaufany publiczny lub firmowy urząd certyfikacji.

Klucz prywatny jest informacją poufną. Nie dodawaj katalogu certs do obrazu ani repozytorium i ogranicz dostęp do pliku:

chmod 600 certs/_.gifrost.com.key

2. Montowanie certyfikatów do kontenera​

Usługa gf-frontend w docker-compose.yml montuje pliki tylko do odczytu:

services:
gf-frontend:
ports:
- "${FRONTEND_PORT}:443"
volumes:
- ./certs/_.gifrost.com.certificate.pem:/etc/nginx/certs/fullchain.pem:ro
- ./certs/_.gifrost.com.key:/etc/nginx/certs/privkey.pem:ro

Możesz użyć innych nazw plików na hoście, zmieniając lewą stronę wpisów volumes. Ścieżki po prawej stronie powinny pozostać bez zmian, ponieważ właśnie z nich Nginx odczytuje certyfikat i klucz.

notatka

Skrypt install.sh nie tworzy katalogu certs i nie pobiera certyfikatów. Pliki muszą istnieć przed wykonaniem ./install.sh lub docker compose up -d.

3. Jak działa HTTPS w kontenerze​

Po uruchomieniu Nginx:

  • nasłuchuje na porcie 443 i obsługuje TLS 1.2 oraz TLS 1.3;
  • używa /etc/nginx/certs/fullchain.pem i /etc/nginx/certs/privkey.pem;
  • serwuje zbudowaną aplikację frontendową;
  • przekazuje żądania spod /backend/ do gf-backend:9983 w sieci Docker Compose;
  • ma również konfigurację portu 80, która przekierowuje HTTP na HTTPS, ale bieżący docker-compose.yml publikuje na hoście wyłącznie port kontenera 443.

Aplikacja jest dostępna pod adresem:

https://<REMOTE_HOST>:<FRONTEND_PORT>

Przykład dla REMOTE_HOST=app.example.com i FRONTEND_PORT=8080:

https://app.example.com:8080

Przewodnik instalacji​

1. Przyznaj uprawnienia do pliku skryptu​

Upewnij się, że plik skryptu ma uprawnienia do wykonania:

chmod +x install.sh

2. Uruchom skrypt​

Po ustawieniu uprawnień uruchom skrypt:

./install.sh

Przegląd działania skryptu instalacyjnego​

1. Sprawdzenie połączenia z internetem​

Podczas instalacji skrypt zapyta, czy masz połączenie z internetem:

  • Jeśli tak:

    • Zostaniesz poproszony o logowanie do Azure Registry (wymagane do pobrania obrazów).
    • Skrypt użyje docker login, a następnie pobierze wymagane obrazy.
  • Jeśli nie:

    • Zostaniesz poproszony o podanie ścieżki do lokalnych plików obrazów Dockera .tar.
    • Skrypt użyje docker load -input, aby załadować obrazy z podanej ścieżki.

2. Podanie konfiguracji w terminalu​

Skrypt poprosi o wprowadzenie kluczowych wartości konfiguracyjnych. Jeśli pozostawisz któreś pole puste, zostanie użyta domyślna wartość.

  • Port frontend

    Enter frontend port [default: 8080]: 

    Port wykorzystywany do dostępu do interfejsu aplikacji.

  • Port backend

    Enter backend port [default: 9983]:

    Port, przez który frontend komunikuje się z usługami backend (API, przetwarzanie danych).

  • Port Grafana

    Enter Grafana port [default: 3000]:

    Port służący do dostępu do pulpitu Grafana (metryki i wizualizacja).

  • Adres hosta (nazwa hosta/IP)

    Enter hostname/IP [default: 10.100.22.27]

    IP lub nazwa hosta, pod którym aplikacja będzie dostępna. Istotne szczególnie przy dostępie zdalnym.

  • Ścieżka do katalogu konfiguracyjnego

    Install directory [default: current]:

    Katalog, w którym będą przechowywane pliki konfiguracyjne i wolumeny Dockera. Użyteczny, jeśli chcesz zachować dane lub uporządkować wdrożenie.

notatka

Jeśli pozostawisz któreś z pól puste, automatycznie zostanie użyta wartość domyślna podana w nawiasach.

Po wykonaniu powyższych kroków proces instalacji zostanie w pełni zautomatyzowany. System skonfiguruje wymagane kontenery, zastosuje ustawienia środowiska i uruchomi wszystkie usługi w tle.

Ręczne uruchomienie​

Jeśli wolisz nie używać skryptu:

  1. Skonfiguruj plik .env.
  2. Uruchom Docker Compose bezpośrednio:
docker compose up -d

Twoja aplikacja powinna być teraz uruchomiona pod adresem https://<REMOTE_HOST>:<FRONTEND_PORT>.