Często zdarza się, że z tego samego kodu źródłowego 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 utrzymuje 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 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 i 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 konfiguracji o nazwie apphosting.yaml do zarządzania
ustawieniami środowiska wykonawczego (procesor, współbieżność, limity pamięci itp.) i zmiennymi środowiskowymi
aplikacji. Obsługuje też odniesienia do obiektów tajnych zarządzanych za pomocą
Cloud 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 konfiguracji, który jest używany, gdy nie można znaleźć pliku konfiguracji specyficznego dla środowiska. Wartości przechowywane w apphosting.yaml powinny być wartościami domyślnymi, które można bezpiecznie stosować we wszystkich środowiskach.
W sekcjach poniżej wyjaśniamy, 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 konfiguracji 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 utworzyć konfigurację specyficzną dla środowiska, 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 scala 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 scalone 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óż kod źródłowy
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: zapoznaj się z ćwiczeniem z programowania Firebase, które integruje hostowaną aplikację z Firebase Authentication i funkcjami Google AI: Next.js | Angular
- Podłącz własną domenę.
- Skonfiguruj backend.
- Monitoruj wdrożenia, wykorzystanie witryny i logi.