Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, Azure'daki bir MongoDB veritabanına (mongoDB API'sine sahip bir Cosmos DB veritabanı) bağlanan Azure Uygulaması Service'te güvenli bir Spring Boot uygulaması oluşturmayı, yapılandırmayı ve dağıtmayı öğreneceksiniz. İşiniz bittiğinde, Linux üzerinde Azure Uygulaması Hizmeti üzerinde çalışan bir Java SE uygulamanız olur.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- MongoDB API'siyle Azure Uygulaması Hizmeti ve Azure Cosmos DB için varsayılan olarak güvenli bir mimari oluşturun.
- Yönetilen kimlik ve Key Vault başvurularını kullanarak bağlantı sırlarını güvence altına alın.
- GitHub deposundan App Service'e Spring Boot örnek uygulaması dağıtın.
- Uygulama kodunda App Service uygulama ayarlarına erişin.
- Güncelleştirmeler yapın ve uygulama kodunu yeniden dağıtın.
- Tanılama günlüklerini App Service'ten akışla aktarabilirsiniz.
- Uygulamayı Azure portalında yönetin.
- Azure Geliştirici CLI'sını kullanarak aynı mimariyi sağlayın ve dağıtın.
- GitHub Codespaces ve GitHub Copilot ile geliştirme iş akışınızı iyileştirin.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Azure hesabınız yoksa ücretsiz olarak bir hesap oluşturabilirsiniz.
- Bir GitHub hesabı. Ücretsiz olarak da bir tane alabilirsiniz.
- Spring Framework geliştirmesi ile Java bilgisi.
- (İsteğe bağlı) GitHub Copilot'ı denemek için bir GitHub Copilot hesabı gerekir. 30 günlük ücretsiz deneme sürümü mevcuttur.
- Etkin aboneliği olan bir Azure hesabı. Azure hesabınız yoksa ücretsiz olarak bir hesap oluşturabilirsiniz.
- Azure Geliştirici CLI'sı yüklü. Azure Geliştirici CLI'sı zaten yüklü olduğundan Azure Cloud Shell ile adımları izleyebilirsiniz.
- Spring Framework geliştirmesi ile Java bilgisi.
- (İsteğe bağlı) GitHub Copilot'ı denemek için bir GitHub Copilot hesabı gerekir. 30 günlük ücretsiz deneme sürümü mevcuttur.
En sona atla
Bu öğreticide örnek uygulamayı hızla dağıtabilir ve Azure'da çalıştığını görebilirsiniz. Azure Cloud Shell'de aşağıdaki komutları çalıştırın ve istemdeki yönergeleri izleyin:
mkdir msdocs-spring-boot-mongodb-sample-app
cd msdocs-spring-boot-mongodb-sample-app
azd init --template msdocs-spring-boot-mongodb-sample-app .
azd up
1. Örneği çalıştırın
İlk olarak, başlangıç noktası olarak örnek bir veri temelli uygulama ayarlarsınız. Size kolaylık sağlamak için, örnek depo bir geliştirme kapsayıcısı yapılandırması içerir. Geliştirme kapsayıcısı MongoDB veritabanı, önbellek ve örnek uygulamanın ihtiyaç duyduğu tüm ortam değişkenleri dahil olmak üzere bir uygulama geliştirmek için ihtiyacınız olan her şeye sahiptir. Geliştirme kapsayıcısı bir GitHub Codespace içinde çalışabilir; bu da örneği web tarayıcısı olan herhangi bir bilgisayarda çalıştırabileceğiniz anlamına gelir.
1. Adım: Yeni bir tarayıcı penceresinde:
- GitHub hesabınıza giriş yapın.
- Şuraya gidin: https://github.com/Azure-Samples/msdocs-spring-boot-mongodb-sample-app/fork
- Yalnızca ana dalı kopyala seçimini kaldırın. Tüm dalları istiyorsun.
- Çatallama oluştur seçeneğini belirleyin.
2. Adım: GitHub fork'unda:
- Başlangıç dalı için main>starter-no-infra seçin. Bu dal yalnızca örnek projeyi içerir ve Azure ile ilgili dosya veya yapılandırma içermez.
- Code>starter-no-infra üzerinde codespace oluştur seçeneğini belirleyin. Kod alanının ayarlanması birkaç dakika sürer.
3. Adım: Codespace terminalinde:
-
mvn package spring-boot:run'i çalıştırın. - Bildirimi
Your application running on port 8080 is available.gördüğünüzde Tarayıcıda Aç'ı seçin. Örnek uygulamayı yeni bir tarayıcı sekmesinde görmeniz gerekir. Jetty sunucusunu durdurmak için yazınCtrl+C.
İpucu
GitHub Copilot'a bu depo hakkında soru sorabilirsiniz. Örneğin:
- @workspace Bu proje ne yapar?
- @workspace Uygulama veritabanına nasıl bağlanır?
- @workspace .devcontainer klasörü ne yapar?
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
2. App Service ve Cosmos DB oluşturma
İlk olarak Azure kaynaklarını oluşturursunuz. Bu öğreticide kullanılan adımlar, App Service ve Azure Cosmos DB içeren varsayılan olarak güvenli bir kaynak kümesi oluşturur. Oluşturma işlemi için şunları belirtirsiniz:
- Web uygulamasının Adı. Uygulamanızın DNS adının bir parçası olarak kullanılır.
- Uygulamanın fiziksel dünyada çalıştırılacağı Bölge. Ayrıca uygulamanızın DNS adının bir parçası olarak da kullanılır.
- Uygulamanın Çalışma Zamanı yığını . Burası, uygulamanız için kullanılacak Java sürümünü seçtiğiniz yerdir.
- Uygulama için Barındırma planı . Bu, uygulamanız için özellik kümesini ve ölçeklendirme kapasitesini içeren fiyatlandırma katmanıdır.
- Uygulamanın Kaynak Grubu . Kaynak grubu, uygulama için gereken tüm Azure kaynaklarını gruplandırmanıza (mantıksal bir kapsayıcıda) olanak tanır.
Azure portalında oturum açın ve Azure Uygulaması Hizmeti kaynaklarınızı oluşturmak için bu adımları izleyin.
Azure portalında:
- Üstteki arama çubuğuna app service yazın.
- Hizmetler başlığı altında App Service'i seçin.
- Web Uygulaması Oluştur'u> seçin.
Doğrudan oluşturma sihirbazına da gidebilirsiniz.
Web Uygulaması Oluştur sayfasında, Temel Bilgiler sekmesinde formu aşağıdaki gibi doldurun:
- Kaynak grubu: Yeni oluştur seçeneğini belirleyin ve msdocs-spring-cosmosdb-tutorial adını kullanın.
- Ad: msdocs-spring-cosmosdb-XYZ; burada XYZ, herhangi üç rastgele karakterdir. Bu ad Azure genelinde benzersiz olmalıdır.
- Çalışma zamanı yığını: Java 25.
- Java web sunucusu yığını: Java SE (Embedded Web Server).
- İşletim Sistemi: Linux.
- Bölge: Size yakın herhangi bir Azure bölgesi.
- Fiyatlandırma planı: Temel. Hazır olduğunuzda, ölçeği bir üretim fiyatlandırma katmanına kadar artırabilirsiniz.
Veritabanı sekmesini seçin ve veritabanını yapılandırın:
- Veritabanı Oluştur'u seçin.
- Altyapı'daMongoDB için Cosmos DB API'sini seçin. Cosmos DB, Azure'da hizmet olarak tam olarak yönetilen bir NoSQL, ilişkisel ve vektör veritabanıdır.
- "Redis için Azure Cache Oluştur" seçeneğini seçmeyin.
Gözden geçir ve oluştur’u seçin. Doğrulama tamamlandıktan sonra Oluştur'u seçin.
Dağıtım tamamlandığında Kaynağa git düğmesini seçin. Doğrudan App Service uygulamasına yönlendirilirsiniz.
Aşağıdaki kaynaklar oluşturulur:
- Kaynak grubu: Oluşturulan tüm kaynaklar için kapsayıcı.
- App Service planı: App Service için işlem kaynaklarını tanımlar. Temel katmanda bir Linux planı oluşturulur.
- App Service: Uygulamanızı temsil eder ve App Service planında çalışır.
- Sanal ağ: App Service uygulamasıyla tümleştirilmiş ve arka uç ağ trafiğini yalıtıyor.
- Azure Cosmos DB: Yalnızca özel uç noktasının arkasından erişilebilir. Veritabanı hesabında sizin için bir veritabanı oluşturulur.
- Özel uç noktalar: Sanal ağdaki veritabanı sunucusu için erişim uç noktaları.
- Özel DNS bölgeleri: Sanal ağdaki veritabanı sunucusunun DNS çözümlemesini etkinleştirin.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
3. Güvenli bağlantı gizli bilgileri
Oluşturma sihirbazı bağlantı dizesini sizin için zaten bir uygulama ayarı olarak oluşturdu. Ancak güvenlik açısından en iyi uygulama, gizli bilgileri tamamen App Service dışında tutmaktır. Hizmet Bağlayıcıları'nın yardımıyla gizli bilgilerinizi bir anahtar kasasına taşıyacak ve uygulama ayarınızı Key Vault başvurusu olarak değiştireceksiniz.
1. Adım: App Service sayfasında:
- Sol menüde Ayarlar > Ortam değişkenleri'ni seçin.
- AZURE_COSMOS_CONNECTIONSTRING öğesinin yanında, Değeri göster seçeneğini belirleyin. Bu bağlantı dizesi, özel uç noktanın arkasında güvenliği sağlanan Cosmos DB veritabanına bağlanmanızı sağlar. Ancak gizli anahtar doğrudan App Service uygulamasında depolanır; bu pek iyi bir yöntem değildir. Bunu değiştireceksin.
2. Adım: Gizli bilgilerin güvenli yönetimi için bir anahtar kasası oluşturun.
- Üstteki arama çubuğuna "key vault" yazın, ardından Marketplace>Key Vault'u seçin.
- Kaynak Grubu'nda msdocs-spring-cosmosdb-tutorial öğesini seçin.
- Anahtar kasası adı alanına yalnızca harf ve sayılardan oluşan bir ad yazın.
- Bölge içinde, bunu kaynak grubuyla aynı örnek konuma ayarlayın.
3. Adım:
- Ağ Oluşturma sekmesini seçin.
- Genel erişimi etkinleştir'in seçimini kaldırın.
- Özel uç nokta oluştur seçin.
- Kaynak Grubu'nda msdocs-spring-cosmosdb-tutorial öğesini seçin.
- Anahtar kasası adı alanına yalnızca harf ve sayılardan oluşan bir ad yazın.
- Bölge alanında, bunu kaynak grubuyla aynı örnek konuma ayarlayın.
- İletişim kutusundaki Konum'da App Service uygulamanızla aynı konumu seçin.
- Kaynak Grubu'nda msdocs-spring-cosmosdb-tutorial öğesini seçin.
- Name alanına msdocs-spring-cosmosdb-XYZVaultEndpoint yazın.
- Sanal ağ'da msdocs-spring-cosmosdb-XYZVnet öğesini seçin.
- Alt ağda, msdocs-spring-cosmosdb-XYZSubnet.
- Tamam'ı seçin.
- Gözden Geçir + oluştur’u ve sonra da Oluştur’u seçin. Anahtar kasası dağıtımının tamamlanmasını bekleyin. "Dağıtımınız tamamlandı" ifadesini görmeniz gerekir.
4. Adım:
- Üst arama çubuğuna msdocs-spring-cosmosdb yazın ve ardından msdocs-spring-cosmosdb-XYZ adlı App Service kaynağını yazın.
- App Service sayfasındaki sol menüde Ayarlar > Hizmet Bağlayıcısı'nı seçin. Uygulama oluşturma sihirbazının sizin için oluşturduğu bir bağlayıcı zaten var.
- Bağlayıcının yanındaki onay kutusunu ve ardından Düzenle'yi seçin.
- Temel Bilgiler sekmesinde İstemci türü'nü SpringBoot olarak ayarlayın. Bu seçenek Spring Boot'a özgü ortam değişkenlerini sizin için oluşturur.
- Kimlik Doğrulaması sekmesini seçin.
- Key Vault'ta Gizli Depola seçeneğini belirleyin.
- Key Vault Connection bölümünde Create new seçeneğini belirleyin. Düzenle iletişim kutusunun üzerinde Bağlantı oluştur iletişim kutusu açılır.
5. Adım:Key Vault bağlantısı için Bağlantı oluştur iletişim kutusunda:
- Key Vault'ta daha önce oluşturduğunuz anahtar kasasını seçin.
- Gözden geçir + Oluştur’u seçin. Sistem tarafından atanan yönetilen kimliğin Seçili olarak ayarlandığını görmeniz gerekir.
- Doğrulama tamamlandığında Oluştur'u seçin.
6. Adım: DefaultConnector için düzenleme iletişim kutusuna geri dönersiniz.
- Kimlik Doğrulaması sekmesinde anahtar kasası bağlayıcısının oluşturulmasını bekleyin. Tamamlandığında, Key Vault Bağlantısı açılır listesi bunu otomatik olarak seçer.
- İleri: Ağ'ı seçin.
- Hedef hizmete erişimi etkinleştirmek için Güvenlik duvarı kurallarını yapılandır'ı seçin. "Hedef hizmette Özel Uç Nokta Yok" iletisini görürseniz, bunu yok sayın. Uygulama oluşturma sihirbazı Cosmos DB veritabanının güvenliğini özel bir uç noktayla zaten sağladı.
- Kaydet'i seçin. Güncelleştirme başarılı bildirimi görünene kadar bekleyin.
7. Adım: Değişikliklerinizi doğrulamak için:
- Soldaki menüden Ortam değişkenleri'ni yeniden seçin.
- spring.data.mongodb.uri uygulama ayarının mevcut olduğundan emin olun. Varsayılan bağlayıcı bunu sizin için oluşturdu ve Spring Boot uygulamanız zaten değişkenini kullanıyor.
- Uygulama ayarının yanında Değeri göster'i seçin. Değer
@Microsoft.KeyVault(...)olmalıdır; bu, gizli dizi artık anahtar kasasında yönetildiği için bunun bir anahtar kasası başvurusu olduğu anlamına gelir.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
4. Örnek kodu dağıtma
Bu adımda GitHub Actions'ı kullanarak GitHub dağıtımını yapılandıracaksınız. App Service'e dağıtmanın birçok yolundan yalnızca biridir, aynı zamanda dağıtım sürecinizde sürekli tümleştirmeye sahip olmanın harika bir yoludur. Varsayılan olarak, GitHub deponuza yapılan her git push, derleme ve dağıtım eylemini tetikler.
1. Adım: Soldaki menüde Deployment>Deployment Center'ı seçin.
2. Adım: Dağıtım Merkezi sayfasında:
- Kaynak bölümünde GitHub'ı seçin. GitHub Actions varsayılan olarak derleme sağlayıcısı olarak seçilir.
- GitHub hesabınızda oturum açın ve Azure'ı yetkilendirme istemini izleyin.
- Kuruluş'ta hesabınızı seçin.
- Depo'da msdocs-spring-boot-mongodb-sample-app öğesini seçin.
- Branch'te starter-no-infra'yı seçin. Bu, Azure ile ilgili dosyalar veya yapılandırmalar olmadan örnek uygulamanızla birlikte çalıştığınız dalla aynıdır.
- Kimlik doğrulama türü için Kullanıcı tarafından atanan kimlik'i seçin.
- Üstteki menüde Kaydet'i seçin. App Service,
.github/workflowsdizinde seçilen GitHub deposuna bir iş akışı dosyası işler. Varsayılan olarak, dağıtım merkezi Microsoft Entra (OIDC kimlik doğrulaması) kullanarak kimlik doğrulaması yapmak üzere iş akışı için kullanıcı tarafından atanan bir kimlik oluşturur. Alternatif kimlik doğrulama seçenekleri için bkz: GitHub Actions kullanarak App Service'e dağıtma.
3. Adım:
- Günlükler sekmesini seçin. Yeni bir dağıtımın zaten çalıştırıldığını ancak durumun Başarısız olduğunu görün.
- Günlükleri Oluştur/Dağıt'ı seçin.
GitHub'da çatallanmış deponuzun Actions sekmesine sahip bir tarayıcı sekmesi açılır. Ek Açıklamalar'da hatasını
The string 'java25' is not valid SemVer notation for a Java versiongörürsünüz. İsterseniz, daha fazla bilgi edinmek için sayfadaki başarısız derleme adımını seçin.
4. Adım: Hata, GitHub iş akışı sırasında bir sorun olduğunu gösterir. Bunu düzeltmek için önce en son değişiklikleri kod alanınıza çekin. Örnek forklamanızın GitHub Codespace’inde yeniden git pull origin starter-no-infra komutunu çalıştırın.
Bu, az önce commit ettiğiniz iş akışı dosyasını codespace’inize getirir.
5. Adım (Seçenek 1: GitHub Copilot ile):
- Sohbet görünümünü, ardından + seçerek yeni bir sohbet oturumu başlatın.
- "@workspace GitHub eylemlerinde neden hata alıyorum? sorusunu sorun: 'java25' dizesi Java bir sürüm için geçerli SemVer gösterimi değil." Copilot size bir açıklama verebilir ve hatta düzeltmeniz gereken iş akışı dosyasının bağlantısını verebilir.
- Gezginde .github/workflows/starter-no-infra_msdocs-spring-cosmosdb-123.yaml dosyasını açın ve önerilen düzeltmeyi yapın. GitHub Copilot size her seferinde aynı yanıtı vermez. Yanıtta ince ayar yapmak için daha fazla soru sormanız gerekebilir. İpuçları için bkz . Kod alanımda GitHub Copilot ile ne yapabilirim?.
5. Adım (Seçenek 2: GitHub Copilot olmadan):
-
.github/workflows/starter-no-infra_msdocs-spring-cosmosdb-123.yaml dosyasını Gezgin’de açın ve
setup-java@v4eylemini bulun. - değerini
java-versionolarak'25'değiştirin.
6. Adım:
- Kaynak Denetimi uzantısını seçin.
- Metin kutusuna,
Fix error in java-versiongibi bir gönderim iletisi yazın. Alternatif olarak,
seçin ve GitHub Copilot'un sizin için bir işleme açıklaması oluşturmasına izin verin. - İşle'yi seçin, ardından Evet ile onaylayın.
- Sync changes 1 seçeneğini belirleyin, ardından OK ile onaylayın.
7. Adım: Azure portalındaki Dağıtım Merkezi sayfasına geri dönün:
- Günlükler sekmesinde Yenile'yi seçin. Kaydettiğiniz değişikliklerden yeni bir dağıtım işlemi zaten başlatıldı.
- Dağıtım çalıştırmasının günlük kaydında, en son zaman damgasına sahip Derleme/Dağıtma Günlükleri girdisini seçin.
8. Adım: GitHub deponuza yönlendirilirsiniz ve GitHub eyleminin çalıştığını görürsünüz. İş akışı dosyası derleme ve dağıtma olarak iki ayrı aşama tanımlar. GitHub çalıştırmasının Tamamlandı durumuna geçtiğini göstermesini bekleyin.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
5. Uygulamaya göz atın
1. Adım: App Service sayfasında:
- Sol menüden Genel Bakış'ı seçin.
- Uygulamanızın URL'sini seçin.
2. Adım: Listeye birkaç görev ekleyin. Tebrikler, Azure Cosmos DB'ye güvenli bağlantı ile Azure Uygulaması Hizmeti'nde bir web uygulaması çalıştırıyorsunuz.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
6. Tanılama günlüklerini akışla aktarma
Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsola gönderilen tüm iletileri yakalar. Örnek uygulama, aşağıdaki kod parçacığında gösterildiği gibi bu özelliği göstermek için standart Log4j günlük deyimlerini içerir:
private static Logger logger = LoggerFactory.getLogger(TodoListController.class);
@Autowired
private TodoItemRepository todoItemRepository;
public TodoListController() {
}
/**
* HTTP GET
*/
@GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE})
public TodoItem getTodoItem(@PathVariable("index") String index) {
logger.info("GET request access '/api/todolist/{}' path.", index);
return todoItemRepository.findById(index).get();
}
1. Adım: App Service sayfasında:
- Sol menüden App Service günlükleri'ni seçin.
- Uygulama günlüğü altında, Dosya Sistemi'ni seçin.
- Üstteki menüde Kaydet'i seçin.
2. Adım: Soldaki menüden Günlük akışı seçin. Uygulamanızın günlüklerini, platform günlükleri ve kapsayıcının içinden gelen günlükler dahil, görüntüleyebilirsiniz.
.NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme konusundaki serideki Java uygulamalarında oturum açma hakkında daha fazla bilgi edinin.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
7. Kaynakları temizleme
İşiniz bittiğinde, kaynak grubunu silerek Azure aboneliğinizdeki tüm kaynakları silebilirsiniz.
1. Adım: Azure portalının üst kısmındaki arama çubuğunda:
- Kaynak grubu adını girin.
- Kaynak grubunu seçin.
2. Adım: Kaynak grubu sayfasında Kaynak grubunu sil'i seçin.
3. Adım:
- Kaynak grubu adını yazarak silme işleminizi onaylayın.
- Sil'i seçin.
- Sil ile yeniden onaylayın.
2. Azure kaynakları oluşturma ve örnek uygulama dağıtma
Bu adımda Azure kaynaklarını oluşturur ve Linux üzerinde App Service için örnek bir uygulama dağıtırsınız. Bu öğreticide kullanılan adımlar, App Service ve Azure Cosmos DB içeren varsayılan olarak güvenli bir kaynak kümesi oluşturur.
Geliştirme kapsayıcısı zaten Azure Geliştirici CLI'sine (AZD) sahiptir.
Deponun kök dizininden
azd initkomutunu çalıştırın.azd init --template javase-app-service-cosmos-redis-infra .İstendiğinde aşağıdaki yanıtları verin:
Soru Yanıt Geçerli dizin boş değil. Burada '<your-directory>' içinde bir proje başlatmak istiyor musunuz? Y Bu dosyalarla ne yapmak istiyorsunuz? Mevcut dosyalarımı değiştirmeden tut Yeni bir ortam adı girin Benzersiz bir ad yazın. AZD şablonu, Azure'da ( <app-name>-<hash>.azurewebsites.net) web uygulamanızın DNS adının bir parçası olarak bu adı kullanır. Alfasayısal karakterlere ve kısa çizgilere izin verilir.komutunu çalıştırıp
azd auth loginistemi izleyerek Azure'da oturum açın:azd auth loginGerekli Azure kaynaklarını oluşturun ve uygulama kodunu
azd upkomutuyla dağıtın. İstemi izleyerek Azure kaynakları için istenen aboneliği ve konumu seçin.azd upKomutun
azd uptamamlanması yaklaşık 15 dakika sürer. Ayrıca uygulama kodunuzu derleyip dağıtır, ancak daha sonra App Service ile çalışmak için kodunuzu değiştirmeniz gerekir. Komutu çalışırken, Azure'daki dağıtıma bir bağlantı da dahil olmak üzere sağlama ve dağıtım işlemiyle ilgili iletiler sağlar. Tamamlandığında, komut dağıtılan uygulamanın bağlantısını da görüntüler.Bu AZD şablonu, aşağıdaki Azure kaynaklarıyla varsayılan olarak güvenli bir mimari oluşturan dosyaları (azure.yaml ve infra dizini) içerir:
- Kaynak grubu: Oluşturulan tüm kaynaklar için kapsayıcı.
- App Service planı: App Service için işlem kaynaklarını tanımlar. B1 katmanında bir Linux planı oluşturulur.
- App Service: Uygulamanızı temsil eder ve App Service planında çalışır.
- Sanal ağ: App Service uygulamasıyla tümleştirilmiş ve arka uç ağ trafiğini yalıtıyor.
- MongoDB API'sine sahip Azure Cosmos DB hesabı: Yalnızca özel uç noktasının arkasından erişilebilir. Sunucuda sizin için bir veritabanı oluşturulur.
- Azure Yönetilen Redis: Yalnızca sanal ağ içinden erişilebilir.
- Anahtar kasası: Yalnızca özel uç noktasının arkasından erişilebilir. App Service uygulamasının gizli bilgilerini yönetmek için kullanılır.
- Özel uç noktalar: Sanal ağda anahtar kasası, veritabanı sunucusu ve Azure Yönetilen Redis için erişim uç noktaları.
- Özel DNS bölgeleri: Sanal ağ içinde Cosmos DB veritabanı, Azure Managed Redis ve Key Vault için DNS çözümlemesini etkinleştirin.
- Log Analytics çalışma alanı: Uygulamanızın günlüklerini göndermesi için hedef kapsayıcı görevi görür ve burada günlükleri de sorgulayabilirsiniz.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
3. Bağlantı dizelerini doğrulayın
Kullandığınız AZD şablonu, sizin için zaten uygulama ayarları olarak bağlantı değişkenlerini oluşturmuş ve size kolaylık sağlamak için bunları terminale çıkış olarak göndermektedir. Uygulama ayarları, bağlantı gizli dizilerini kod deponuzun dışında tutmanın bir yoludur.
AZD çıktısında
spring.data.mongodb.uriuygulama ayarını bulun. Yalnızca ayar adları görüntülenir. AZD çıktısında şöyle görünürler:App Service app has the following app settings: - spring.data.mongodb.uri - spring.data.mongodb.database - spring.redis.host - spring.redis.port - spring.redis.password - spring.redis.database - spring.redis.ssl - spring.cloud.azure.keyvault.secret.credential.managed_identity_enabled - spring.cloud.azure.keyvault.secret.endpoint - azure.keyvault.uri - azure.keyvault.scopespring.data.mongodb.uriAzure'daki Cosmos DB veritabanına bağlantı URI'sini içerir. Bu, uygulamanızın src/main/resources/application.properties dosyasında zaten kullandığı standart bir Spring Data değişkenidir.Gezginde src/main/resources/application.properties adresine gidin ve Spring Boot uygulamanızın
spring.data.mongodb.uriverilere erişmek için değişkeni zaten kullandığını görün.Size kolaylık olması için AZD şablonu çıkışı, uygulamanın uygulama ayarları sayfasına doğrudan bağlantıyı gösterir. Bağlantıyı bulun ve yeni bir tarayıcı sekmesinde açın.
spring.data.mongodb.urideğerine bakarsanız, bunun@Microsoft.KeyVault(...)olması gerekir; bu da gizli değer anahtar kasasında yönetildiği için bir anahtar kasası başvurusu olduğu anlamına gelir.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
4. Uygulamaya göz atın
AZD çıkışında uygulamanızın URL'sini bulun ve tarayıcıda bu URL'ye gidin. URL, AZD çıkışında şöyle görünür:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>
Listeye birkaç görev ekleyin.
Tebrikler, Azure Cosmos DB'ye güvenli bağlantı ile Azure Uygulaması Hizmeti'nde bir web uygulaması çalıştırıyorsunuz.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
5. Tanılama günlüklerini akışla aktarma
Azure Uygulaması Hizmeti, uygulamanızla ilgili sorunları tanılamanıza yardımcı olmak için konsol günlüklerini yakalayabilir. Kolaylık sağlamak için AZD şablonu, yerel dosya sistemine günlük kaydını zaten etkinleştirmiştir ve günlükleri bir Log Analytics çalışma alanına göndermektedir.
Örnek uygulama, aşağıdaki kod parçacığında gösterildiği gibi bu özelliği göstermek için standart Log4j günlük deyimlerini içerir:
private static Logger logger = LoggerFactory.getLogger(TodoListController.class);
@Autowired
private TodoItemRepository todoItemRepository;
public TodoListController() {
}
/**
* HTTP GET
*/
@GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE})
public TodoItem getTodoItem(@PathVariable("index") String index) {
logger.info("GET request access '/api/todolist/{}' path.", index);
return todoItemRepository.findById(index).get();
}
AZD çıktısında, App Service günlüklerini akış olarak izleme bağlantısını bulun ve bu bağlantıyı tarayıcıda açın. Bağlantı, AZD çıkışında şöyle görünür:
Stream App Service logs at: <URL>
.NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme konusundaki serideki Java uygulamalarında oturum açma hakkında daha fazla bilgi edinin.
Sorun mu yaşıyorsunuz? Sorun Giderme bölümüne bakın.
6. Kaynakları temizleme
Geçerli dağıtım ortamındaki tüm Azure kaynaklarını silmek için komutunu çalıştırın azd down ve istemleri izleyin.
azd down
Sorun giderme
- Azure Cosmos DB için portal dağıtım görünümü Çakışma durumu gösteriyor
- Dağıtılan örnek uygulama, görev listesi uygulamasını göstermiyor
Azure Cosmos DB için portal dağıtım görünümü Çakışma durumu gösteriyor
Aboneliğinize ve seçtiğiniz bölgeye bağlı olarak Azure Cosmos DB'nin Conflictdağıtım durumunu, İşlem ayrıntıları bölümünde aşağıdaki iletiyle görebilirsiniz:
Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.
Bu hata büyük olasılıkla aboneliğinizde seçtiğiniz bölge için bir sınır nedeniyle oluşur. Dağıtımınız için farklı bir bölge seçmeyi deneyin. Dağıtımdaki diğer kaynakların kapasitesi bölgeye ve aboneliğe göre de farklılık gösterebilir, bu nedenle seçtiğiniz bölgenin App Service planı ve Azure Managed Redis (Balanced_B0) örneğine yönelik kapasiteye sahip olduğundan emin olun.
Dağıtılan örnek uygulama, görev listesi uygulamasını göstermiyor
Görev listesi uygulaması yerine bir Hey, Java developers! sayfa görüyorsanız, App Service büyük olasılıkla en son kod dağıtımınızdan güncelleştirilmiş kapsayıcıyı yüklemeye devam ediyordur. Birkaç dakika bekleyin ve sayfayı yenileyin.
Sık sorulan sorular
- Bu kurulumun maliyeti ne kadardır?
- Sanal ağın arkasında bulunan Cosmos DB veritabanıyla veritabanı geçişini nasıl çalıştırırım?
- Yerel uygulama geliştirme GitHub Actions ile nasıl çalışır?
- Kullanıcı tarafından atanan kimlik oluşturma iznim yok
Bu kurulumun maliyeti ne kadardır?
Oluşturulan kaynakların fiyatlandırması aşağıdaki gibidir:
- App Service planı Temel katmanda oluşturulur ve ölçeği büyütülebilir veya küçültülebilir. Bkz. App Service fiyatlandırması.
- Azure Cosmos DB hesabı Sunucusuz katmanında oluşturulur ve bu katmanla ilişkili küçük bir maliyet vardır. Bkz. Azure Cosmos DB fiyatlandırması.
- Azure Yönetilen Redis örneği, en düşük önbellek boyutuna sahip Dengeli B0 (
Balanced_B0) katmanında oluşturulur. Bu katmanla ilişkili küçük bir maliyet vardır. Daha yüksek kullanılabilirlik, kümeleme ve diğer özellikler için ölçeğini daha yüksek performans katmanlarına artırabilirsiniz. Bkz: Azure Yönetilen Redis fiyatlandırması. - Eşleme gibi ek işlevler yapılandırmadığınız sürece sanal ağ ücret ödemez. Bkz. Azure Sanal Ağ fiyatlandırması.
- Özel DNS bölgesi küçük bir ücrete tabi. Bkz. Azure DNS fiyatlandırması.
Sanal ağın arkasındaki Cosmos DB veritabanıyla veritabanı geçişini nasıl çalıştırabilirim?
App Service'teki Java SE kapsayıcısının Cosmos DB'ye zaten ağ bağlantısı vardır, ancak herhangi bir geçiş aracı veya diğer MongoDB araçlarını içermez. Birkaç seçeneğiniz vardır:
- Hibernate veya Flyway gibi araçlarla veritabanı geçişlerini uygulama başlatılırken otomatik olarak çalıştırın.
- Uygulamanın SSH oturumunda Flyway gibi bir geçiş aracı yükleyin ve ardından geçiş betiğini çalıştırın. Yüklü aracın uygulama yeniden başlatıldıktan sonra /home dizininde olmadığı sürece kalıcı olmayacağı unutmayın.
- Azure cloud shell'i sanal ağ ile tümleştirin ve buradan veritabanı geçişlerini çalıştırın.
Yerel uygulama geliştirme GitHub Actions ile nasıl çalışır?
App Service tarafından otomatik oluşturulan iş akışı dosyasını örnek alırsak, her bir git push yeni bir derleme ve dağıtım çalıştırmasını başlatır. GitHub deposunun yerel bir kopyasından istediğiniz güncelleştirmeleri yapar ve GitHub'a gönderebilirsiniz. Örneğin:
git add .
git commit -m "<some-message>"
git push origin main
Kullanıcı tarafından atanan kimlik oluşturma iznim yok
Bkz. Dağıtım Merkezi'nden GitHub Actions dağıtımını ayarlama.
Kod alanımda GitHub Copilot ile ne yapabilirim?
Kod alanını oluştururken GitHub Copilot sohbet görünümünün zaten sizin için orada olduğunu fark edebilirsiniz. Kolaylık sağlamak için kapsayıcı tanımına GitHub Copilot sohbet uzantısını dahil ediyoruz (bkz . .devcontainer/devcontainer.json). Ancak, bir GitHub Copilot hesabına ihtiyacınız vardır (30 günlük ücretsiz deneme sürümü kullanılabilir).
GitHub Copilot ile konuşurken size birkaç ipucu:
- Tek bir sohbet oturumunda, sorular ve yanıtlar birbirleri üzerinde derlenebilir ve sorularınızı ayarlayarak, elde ettiğiniz yanıta ince ayar yapabilirsiniz.
- Varsayılan olarak, GitHub Copilot'un deponuzdaki hiçbir dosyaya erişimi yoktur. Dosya hakkında soru sormak için önce düzenleyicide dosyayı açın.
- GitHub Copilot'ın yanıtlarını hazırlarken depodaki tüm dosyalara erişmesine izin vermek için sorunuza ile
@workspacebaşlayın. Daha fazla bilgi için bkz. Use the @workspace agent. - Sohbet oturumunda, GitHub Copilot değişiklikleri önerebilir ve (ile
@workspace) değişikliklerin yapılacağı yeri bile önerebilir, ancak değişiklikleri sizin için yapmasına izin verilmez. Önerilen değişiklikleri eklemek ve test etmek size bağlı.
Sonraki adımlar
- Java Geliştiricileri için Azure
- Spring Boot
- Azure Cosmos DB için Spring Data
- Azure Cosmos DB ve -App Service Linux
Geliştirici kılavuzunda App Service'te Java uygulamalarını çalıştırma hakkında daha fazla bilgi edinin.
Özel bir etki alanı ve sertifikayla uygulamanızın güvenliğini sağlamayı öğrenin.