Często zdarza się, że z tej samej bazy kodu wdrażanych jest kilka środowisk, z których każde ma nieco inną konfigurację. Możesz na przykład przypisać mniej procesora i pamięci RAM do środowiska testowego lub upewnić się, że środowisko produkcyjne ma co najmniej 1 aktywną instancję gotową do obsługi żądań. Możesz też określić różne zmienne środowiskowe i obiekty tajne w zależności od środowiska i zasobów, których chcesz używać.
W tym przewodniku opisujemy, jak wdrożyć środowisko produkcyjne i testowe, każde w osobnym projekcie w Firebase. Postępując zgodnie z tymi samymi zasadami, możesz wdrożyć inne rodzaje środowisk. Więcej informacji o środowiskach znajdziesz w sekcji Omówienie środowisk oraz Ogólne sprawdzone metody konfigurowania projektów Firebase.
Wymagania wstępne
- Kod aplikacji jest już przechowywany w GitHubie.
- Masz już utworzony osobny projekt dla każdego środowiska, np.
my-production-firebase-projectimy-staging-firebase-project. Pamiętaj, aby otagować projekt Firebase środowiska produkcyjnego typem środowiska „production”. - W każdym projekcie masz utworzony backend App Hosting, a gałąź aktywna jest ustawiona na gałąź GitHub, którą chcesz wdrożyć (np.
main). Więcej informacji znajdziesz w artykule Pierwsze kroki z App Hosting.
Krok 0. Utwórz konfigurację domyślną w apphosting.yaml
App Hosting obsługuje plik konfiguracyjny o nazwie apphosting.yaml, który służy do zarządzania ustawieniami środowiska wykonawczego (procesor, równoczesność, limity pamięci itp.) i zmiennymi środowiskowymi aplikacji. Obsługuje też odwołania do obiektów tajnych zarządzanych za pomocą Secret Manager, dzięki czemu można bezpiecznie sprawdzać kontrolę źródła. Więcej
informacji znajdziesz w artykule Konfigurowanie
backendu.
Na początek utwórz plik apphosting.yaml w katalogu głównym aplikacji.
Jest to rezerwowy plik konfiguracyjny, który jest używany, gdy nie można znaleźć pliku konfiguracyjnego specyficznego dla środowiska. Wartości przechowywane w apphosting.yaml powinny być domyślnymi wartościami, których można bezpiecznie używać we wszystkich środowiskach.
W sekcjach poniżej opisujemy, jak zastąpić wartości domyślne w apphosting.yaml w przypadku konkretnych środowisk. Ten przykładowy proces tworzy środowisko testowe.
Krok 1. Ustaw nazwę środowiska
Każdy App Hosting backend ma ustawienie Nazwa środowiska. To pole służy do mapowania backendu na plik konfiguracyjny specyficzny dla środowiska i można je zmienić w dowolnym momencie. Dla każdego backendu możesz ustawić tylko 1 nazwę środowiska.
Aby ustawić nazwę środowiska backendu:
- W konsoli Firebase wybierz projekt testowy (w tym przykładzie
my-staging-firebase-project). - Otwórz Hosting i usługi bezserwerowe > App Hosting.
- W wybranym backendzie kliknij Wyświetl panel.
- Na karcie Ustawienia wybierz Środowisko.
- W sekcji Nazwa środowiska wpisz nazwę środowiska. Możesz nadać środowisku dowolną nazwę. W tym przykładzie jest to staging.
- Kliknij Zapisz.
Gdy w backendzie zostanie uruchomione wdrożenie App Hosting (za pomocą polecenia git
push lub ręcznie w konsoli Firebase), App Hosting sprawdzi
czy istnieje plik apphosting.ENVIRONMENT_NAME.yaml, zanim
przejdzie do apphosting.yaml.
Krok 2. Utwórz plik apphosting.yaml specyficzny dla środowiska
Aby skonfigurować środowisko, utwórz plik o nazwie
apphosting.ENVIRONMENT_NAME.yaml aby
określić zastąpienia specyficzne dla środowiska. Ten plik ma taki sam format jak
domyślny apphosting.yaml i musi znajdować się w
katalogu głównym aplikacji obok apphosting.yaml.
Podczas kompilacji App Hosting łączy te 2 pliki, przy czym priorytet mają
wartości w pliku YAML specyficznym dla środowiska, a nie w podstawowym apphosting.yaml
pliku.
W tym przykładzie utworzysz plik o nazwie apphosting.staging.yaml w katalogu głównym aplikacji:
runConfig:
cpu: 1
memoryMiB: 512
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
Załóżmy, że masz już plik apphosting.yaml, który wygląda tak:
runConfig:
cpu: 3
memoryMiB: 1024
maxInstances: 4
minInstances: 0
concurrency: 100
env:
- variable: API_URL
value: api.service.com
availability:
- BUILD
- RUNTIME
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
Ostateczne połączone dane wyjściowe, które możesz sprawdzić w logach Cloud Build, będą wyglądać tak:
runConfig:
cpu: 1
memoryMiB: 512
maxInstances: 4
minInstances: 0
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
Zwróć uwagę, że niektóre wartości runConfig, takie jak procesor, zostały zastąpione, podobnie jak wszystkie nakładające się zmienne środowiskowe.
Krok 3. Wdróż bazę kodu
Gdy skończysz edytować plik apphosting.ENVIRONMENT_NAME.yaml specyficzny dla środowiska, prześlij go do GitHuba:
$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push
Wszystkie backendy otagowane tą nazwą środowiska będą używać konkretnych wartości zastąpienia określonych w odpowiednim pliku YAML i wrócą do apphosting.yaml, gdy nie znajdą wartości. W przypadku backendów bez powiązanej nazwy środowiska możesz nadal używać apphosting.yaml.
Dalsze kroki
- Dowiedz się więcej: wykonaj ćwiczenie z programowania Firebase, które integruje hostowaną aplikację z Uwierzytelnianiem Firebase i funkcjami Google AI: Next.js | Angular
- Podłącz własną domenę.
- Skonfiguruj backend.
- Monitoruj wdrożenia, użytkowanie witryny i logi.