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.
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.
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
443i obsługuje TLS 1.2 oraz TLS 1.3; - używa
/etc/nginx/certs/fullchain.pemi/etc/nginx/certs/privkey.pem; - serwuje zbudowaną aplikację frontendową;
- przekazuje żądania spod
/backend/dogf-backend:9983w sieci Docker Compose; - ma również konfigurację portu
80, która przekierowuje HTTP na HTTPS, ale bieżącydocker-compose.ymlpublikuje na hoście wyłącznie port kontenera443.
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.
- Zostaniesz poproszony o podanie ścieżki do lokalnych plików obrazów Dockera
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.
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:
- Skonfiguruj plik
.env. - Uruchom Docker Compose bezpośrednio:
docker compose up -d
Twoja aplikacja powinna być teraz uruchomiona pod adresem
https://<REMOTE_HOST>:<FRONTEND_PORT>.