Dinamik içeriğinizi oluşturmak ve yayınlamak için Cloud Run'ı Firebase Hosting ile eşleştirin veya mikro hizmet olarak REST API'ler oluşturun.
Cloud Run'ı kullanarak, container görüntüsünde paketlenmiş bir uygulamayı dağıtabilirsiniz. Ardından Firebase Hosting'i kullanarak HTTPS isteklerini, container mimarisine alınmış uygulamanızı tetiklemeleri için yönlendirebilirsiniz.
- Cloud Run, birkaç dili (Go, Node.js, Python ve Java dahil) destekler. Böylece, istediğiniz programlama dilini ve çerçeveyi kullanma esnekliğine sahip olursunuz.
- Cloud Run, alınan istekleri işlemek için container görüntünüzü otomatik ve yatay olarak ölçeklendirir ve talep azaldıkça ölçeği düşürür.
- Yalnızca isteklerin işlenmesi sırasında harcanan CPU, bellek ve ağ iletişimi için ödeme yaparsınız.
Firebase Hosting ile entegre Cloud Run için kullanım alanları ve örnekler için sunucusuz genel bakış sayfamızı ziyaret edin.
Bu kılavuzda aşağıdaki işlemleri nasıl yapacağınız gösterilmektedir:
- Basit bir Hello World uygulaması yazma
- Bir uygulamayı container mimarisine alma ve Container Registry'ye yükleme
- Container görüntüsünü Cloud Run'a dağıtma
- Container mimarisine alınmış uygulamanıza doğrudan barındırma istekleri
Dinamik içerik sunma performansını iyileştirmek için isteğe bağlı olarak önbellek ayarlarınızı ayarlayabileceğinizi unutmayın.
Başlamadan önce
Cloud Run'ı kullanmadan önce Cloud Billing hesabı oluşturma, Cloud Run API'yi etkinleştirme ve gcloud
komut satırı aracını yükleme gibi bazı başlangıç görevlerini tamamlamanız gerekir.
Projeniz için faturalandırma ayarlarını yapın
Cloud Run ücretsiz kullanım kotası sunar ancak Cloud Run'ı kullanmak veya denemek için yine de Firebase projenizle ilişkilendirilmiş bir Cloud Billing hesabınızın olması gerekir.
API'yi etkinleştirin ve SDK'yı yükleyin
Google API'leri konsolunda Cloud Run API'yi etkinleştirin:
Google API'leri konsolunda Cloud Run API sayfasını açın.
İstendiğinde Firebase projenizi seçin.
Cloud Run API sayfasında Etkinleştir'i tıklayın.
Google Cloud SDK'yı yükleyip başlatın.
gcloud
aracının doğru proje için yapılandırıldığından emin olun:gcloud config list
1. Adım: Örnek uygulamayı yazın
Cloud Run'ın aşağıdaki örnekte gösterilen dillerin yanı sıra birçok başka dili de desteklediğini unutmayın.
Go
helloworld-go
adlı yeni bir dizin oluşturun ve ardından dizini bu dizinle değiştirin:mkdir helloworld-go
cd helloworld-go
helloworld.go
adlı yeni bir dosya oluşturun ve sonra aşağıdaki kodu ekleyin:Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasında dinleme yapan temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı, container mimarisine alınmaya ve Container Registry'ye yüklenmeye hazır.
Node.js
helloworld-nodejs
adlı yeni bir dizin oluşturun ve ardından bu dizini değiştirin:mkdir helloworld-nodejs
cd helloworld-nodejs
Aşağıdaki içeriklerle bir
package.json
dosyası oluşturun:index.js
adlı yeni bir dosya oluşturun ve sonra aşağıdaki kodu ekleyin:Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasında dinleme yapan temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı, container mimarisine alınmaya ve Container Registry'ye yüklenmeye hazır.
Python
helloworld-python
adlı yeni bir dizin oluşturun ve ardından bu dizini değiştirin:mkdir helloworld-python
cd helloworld-python
app.py
adlı yeni bir dosya oluşturun ve sonra aşağıdaki kodu ekleyin:Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasında dinleme yapan temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı, container mimarisine alınmaya ve Container Registry'ye yüklenmeye hazır.
Java
Java SE 8 veya üzeri JDK'yı ve CURL'yi yükleyin.
Bunu yalnızca bir sonraki adımda yeni web projesini oluşturmak için yapmamız gerektiğini unutmayın. Daha sonra açıklanacak olan Dockerfile, tüm bağımlılıkları container'a yükler.
Konsoldan cURL'yi kullanarak yeni bir boş web projesi oluşturun, ardından sıkıştırma komutlarını açın:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Bu işlem bir SpringBoot projesi oluşturur.
/
eşlemesini işlemek için@RestController
veTARGET
ortam değişkenini sağlamak üzere@Value
alanı ekleyereksrc/main/java/com/example/helloworld/HelloworldApplication.java
içindeSpringBootApplication
sınıfını güncelleyin:Bu kod,
PORT
ortam değişkeni tarafından tanımlanan bağlantı noktasında dinleme yapan temel bir web sunucusu oluşturur.
Uygulamanız tamamlandı, container mimarisine alınmaya ve Container Registry'ye yüklenmeye hazır.
2. Adım: Bir uygulamayı container mimarisine alın ve Container Registry'ye yükleyin
Kaynak dosyalarla aynı dizinde
Dockerfile
adlı yeni bir dosya oluşturarak örnek uygulamayı container mimarisine alın. Aşağıdaki içeriği dosyanıza kopyalayın.Go
Node.js
Python
Java
Dockerfile'ınızı içeren dizinden aşağıdaki komutu çalıştırarak Cloud Build'i kullanarak container görüntünüzü derleyin:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
İşlem başarılı olduğunda resim adını içeren bir BAŞARILI mesajı görürsünüz
(gcr.io/PROJECT_ID/helloworld
).
Container görüntüsü artık Container Registry'de depolanmaktadır ve istendiğinde yeniden kullanılabilir.
Container'ınızı yerel olarak oluşturmak için Cloud Build yerine Docker'ın yerel olarak yüklenmiş sürümünü kullanabileceğinizi unutmayın.
3. Adım: Container görüntüsünü Cloud Run'a dağıtın
Aşağıdaki komutu kullanarak dağıtın:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
İstendiğinde:
- Bölge seçin (ör.
us-central1
) - Hizmet adını onaylayın (örneğin,
helloworld
) - Kimliği doğrulanmayan çağrılara izin vermek için
Y
yanıtını verin
- Bölge seçin (ör.
En iyi performansı elde etmek için aşağıdaki bölgeleri kullanarak Cloud Run hizmetinizi Hosting ile ortak kullanın:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Hosting'den Cloud Run'a yapılan yeniden yazma işlemleri aşağıdaki bölgelerde desteklenir:
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-south2
asia-southeast1
asia-southeast2
australia-southeast1
australia-southeast2
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west12
europe-west2
europe-west3
europe-west4
europe-west6
europe-west8
europe-west9
me-central1
me-west1
northamerica-northeast1
northamerica-northeast2
southamerica-east1
southamerica-west1
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
us-west1
us-central1
us-east1
europe-west1
asia-east1
Dağıtımın tamamlanması için birkaç dakika bekleyin. Başarılı olduğunda, komut satırında hizmet URL'si görüntülenir. Örneğin:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Hizmet URL'sini bir web tarayıcısında açarak dağıtılmış kapsayıcınızı ziyaret edin.
Bir sonraki adımda, Firebase tarafından barındırılan siteniz için dinamik içerik oluşturabilmesi amacıyla bu container mimarisine alınmış uygulamaya bir Firebase Hosting URL'sinden nasıl erişeceğiniz açıklanmaktadır.
4. Adım: Barındırma isteklerini container mimarisine alınmış uygulamanıza yönlendirin
Yeniden yazma kuralları sayesinde, belirli kalıplarla eşleşen istekleri tek bir hedefe yönlendirebilirsiniz.
Aşağıdaki örnekte, helloworld
kapsayıcı örneğinizin başlatılmasını ve çalıştırılmasını tetiklemek için Hosting sitenizdeki /helloworld
sayfasından gelen tüm isteklerin nasıl yönlendirileceği gösterilmektedir.
Aşağıdaki koşulların karşılandığından emin olun:
Firebase CLI'nın en son sürümüne sahip olmalısınız.
Firebase Hosting'i başlattınız.
CLI yükleme ve Barındırma'yı başlatma hakkında ayrıntılı talimatlar için Hosting için Başlangıç Kılavuzu'na bakın.
firebase.json
dosyanızı açın.hosting
bölümü altına aşağıdakirewrite
yapılandırmasını ekleyin:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/helloworld", "run": { "serviceId": "helloworld", // "service name" (from when you deployed the container image) "region": "us-central1", // optional (if omitted, default is us-central1) "pinTag": true // optional (see note below) } } ] }
Proje dizininizin kök dizininden aşağıdaki komutu çalıştırarak barındırma yapılandırmanızı sitenize dağıtın:
firebase deploy --only hosting
Kapsayıcınıza artık aşağıdaki URL'ler üzerinden erişilebilir:
Firebase alt alanlarınız:
PROJECT_ID.web.app/
vePROJECT_ID.firebaseapp.com/
Bağlı özel alanlar:
CUSTOM_DOMAIN/
Yeniden yazma kuralları hakkında daha fazla bilgi için Hosting yapılandırma sayfasını ziyaret edin. Çeşitli Hosting yapılandırmaları için yanıtların öncelik sırası hakkında da bilgi edinebilirsiniz.
Yerel olarak test et
Geliştirme sırasında container görüntünüzü yerel olarak çalıştırıp test edebilirsiniz. Ayrıntılı talimatlar için Cloud Run belgelerini inceleyin.
Sonraki adımlar
Dinamik içeriğinizin bir global CDN'de önbelleğe alınmasını ayarlayın.
Firebase Admin SDK'yı kullanarak diğer Firebase hizmetleriyle etkileşim kurun.
Container'ları kurma, yönetme ve yapılandırmayla ilgili ayrıntılı "Nasıl Yapılır?" kılavuzlarıyla Cloud Run hakkında daha fazla bilgi edinin.
Cloud Run için fiyatlandırma ile kota ve sınırları inceleyin.