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 makalede, basit bir CRUD uygulamasıyla Red Hat Quarkus'u Microsoft Azure Container Apps'te hızla dağıtma adımları gösterilmektedir. Uygulama, JavaScript ön ucu ve REST uç noktası olan bir "yapılacaklar listesidir". PostgreSQL için Azure Veritabanı esnek sunucusu, uygulama için kalıcılık katmanı sağlar. Makalede uygulamanızı yerel olarak test etme ve Container Apps'e dağıtma adımları gösterilmektedir.
Önkoşullar
- Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Ubuntu, macOS veya Linux için Windows Alt Sistemi gibi Unix benzeri işletim sistemi yüklü yerel bir makine hazırlayın.
- Java SE uygulama sürümü 17 veya üzerini yükleyin; örneğin, OpenJDK'nin Microsoft derlemesi.
- Maven, sürüm 3.9.8 veya üzerini yükleyin.
- İşletim sisteminiz için Docker yükleyin.
- jq'yi yükleyin.
- cURL'yi yükleyin.
- Quarkus CLI, sürüm 3.12.1 veya üzerini yükleyin.
-
Azure CLI komutlarını çalıştırmak için Azure CLI'yi yükleyin.
-
az loginkomutunu kullanarak Azure CLI'da oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile Azure'da oturum açma. - İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz . Azure CLI ile uzantıları kullanma ve yönetme.
- Yüklü sürümü ve bağımlı kitaplıkları bulmak için
az versionçalıştırın. En son sürüme yükseltmek içinaz upgradeçalıştırın. Bu makale, Azure CLI'nın en az 2.61.0 sürümünü gerektirir.
-
Uygulama projesini oluşturma
Bu makalenin örnek Java projesini kopyalamak için aşağıdaki komutları kullanın. Örnek GitHub'dadır.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2025-05-08
cd aca-quarkus
detached HEAD durumunda olduğunuzu belirten bir ileti görürseniz, bu iletiyi görmezden gelebilirsiniz. Bu makale herhangi bir işleme gerektirmediğinden, detached HEAD durumu uygundur.
Quarkus uygulamanızı yerel olarak test edin
Bu bölümdeki adımlarda uygulamayı yerel olarak nasıl çalıştırabileceğiniz gösterilmektedir.
Quarkus, geliştirme ve test modunda yapılandırılmamış hizmetlerin otomatik olarak sağlanmasını destekler. Quarkus bu özelliği geliştirme hizmetleri olarak ifade eder. Veritabanı hizmetine bağlanma gibi bir Quarkus özelliği eklediğinizi varsayalım. Uygulamayı test etmek istiyorsunuz ancak gerçek bir veritabanına bağlantıyı henüz tam olarak yapılandırmadınız. Quarkus, ilgili hizmetin saplama sürümünü otomatik olarak başlatır ve uygulamanızı buna bağlar. Daha fazla bilgi için Quarkus belgelerindeki Dev Services'e Genel Bakış bölümüne bakın.
Kapsayıcı ortamınızın çalıştığından emin olun ve Quarkus geliştirme moduna geçmek için aşağıdaki komutu kullanın:
quarkus dev
quarkus devyerine, kullanarak mvn quarkus:devMaven ile aynı şeyi gerçekleştirebilirsiniz.
Quarkus geliştirme modu kullanımınıza yönelik telemetri göndermek isteyip istemediğiniz sorulabilir. Öyleyse, istediğiniz gibi yanıtlayın.
Quarkus geliştirme modu, arka plan derlemesi ile canlı yeniden yüklemeyi etkinleştirir. Uygulama kaynak kodunuzun herhangi bir yönünü değiştirir ve tarayıcınızı yenilerseniz değişiklikleri görebilirsiniz. Derleme veya dağıtımla ilgili herhangi bir sorun varsa, bir hata sayfası size bildirir. Quarkus geliştirme modu, 5005 numaralı bağlantı noktasında hata ayıklayıcıyı dinler. Hata ayıklayıcının çalışmadan önce eklenmesini beklemek istiyorsanız komut satırını geçirin -Dsuspend . Hata ayıklayıcısını hiç istemiyorsanız kullanabilirsiniz -Ddebug=false.
Çıktı aşağıdaki örnekteki gibi görünmelidir:
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
INFO [io.quarkus] (Quarkus Main Thread) quarkus-todo-demo-app-aca 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.2.0.Final) started in 14.826s. Listening on: http://localhost:8080
INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
INFO [io.quarkus] (Quarkus Main Thread) Installed features: [agroal, cdi, hibernate-orm, hibernate-validator, jdbc-postgresql, narayana-jta, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]
--
Tests paused
Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>
Quarkus geliştirme modunun çalıştığı terminalde w tuşuna basın. w tuşu, uygulamayı göstermek Todo için varsayılan web tarayıcınızı açar. Uygulama GUI'sine http://localhost:8080 doğrudan da erişebilirsiniz.
Yapılacaklar listesinden birkaç yapılacaklar öğesi seçmeyi deneyin. Kullanıcı arabirimi, üstü çizili metin stiliyle seçimi gösterir. Aşağıdaki ekran görüntüsünde gösterildiği gibi Todo uygulamalarını doğrula yazıp ENTER tuşuna basarak da yapılacaklar listesine yeni bir yapılacaklar öğesi ekleyebilirsiniz:
Yerel PostgreSQL veritabanında depolayan tüm yapılacaklar öğelerini almak için RESTful API'sine (/api) erişin:
curl --verbose http://localhost:8080/api | jq .
Çıktı aşağıdaki örnekteki gibi görünmelidir:
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /api HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< content-length: 664
< Content-Type: application/json;charset=UTF-8
<
{ [664 bytes data]
100 664 100 664 0 0 13278 0 --:--:-- --:--:-- --:--:-- 15441
* Connection #0 to host localhost left intact
[
{
"id": 1,
"title": "Introduction to Quarkus Todo App",
"completed": false,
"order": 0,
"url": null
},
{
"id": 2,
"title": "Quarkus on Azure App Service",
"completed": false,
"order": 1,
"url": "https://learn.microsoft.com/en-us/azure/app-service/quickstart-java"
},
{
"id": 3,
"title": "Quarkus on Azure Container Apps",
"completed": false,
"order": 2,
"url": "https://learn.microsoft.com/en-us/training/modules/deploy-java-quarkus-azure-container-app-postgres/"
},
{
"id": 4,
"title": "Quarkus on Azure Functions",
"completed": false,
"order": 3,
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-first-quarkus"
},
{
"id": 5,
"title": "Verify Todo apps",
"completed": false,
"order": 5,
"url": null
}
]
Quarkus geliştirme modundan çıkmak için q tuşuna basın.
Quarkus uygulamasını çalıştırmak için Azure kaynaklarını oluşturma
Bu bölümdeki adımlarda Quarkus örnek uygulamasını çalıştırmak için aşağıdaki Azure kaynaklarının nasıl oluşturulacağı gösterilmektedir:
- esnek sunucu PostgreSQL için Azure Veritabanı
- Azure Container Registry
- Azure Container Apps
Bu kaynaklardan bazılarının Azure aboneliği kapsamında benzersiz adlara sahip olması gerekir. Bu benzersizliği sağlamak için baş harfleri, sıra, tarih, sonek desenini kullanabilirsiniz. Bu düzeni uygulamak için, kaynaklarınızın baş harflerini, bir dizi numarasını, bugünün tarihini ve bir tür kaynağa özgü soneki (örneğin, rg "kaynak grubu" için) listeleyerek kaynaklarınızı adlandırın. Aşağıdaki ortam değişkenleri bu düzeni kullanır. ve UNIQUE_VALUE içindeki LOCATION yer tutucu değerlerini kendi değerlerinizle değiştirin ve komutları terminalinizde çalıştırın.
export UNIQUE_VALUE=<your unique value, such as mjg101424>
export RESOURCE_GROUP_NAME=${UNIQUE_VALUE}rg-passwordless
export LOCATION=<your desired Azure region for deploying your resources - for example, eastus>
export REGISTRY_NAME=${UNIQUE_VALUE}regpasswordless
export DB_SERVER_NAME=${UNIQUE_VALUE}dbpasswordless
export DB_NAME=demodb
export ACA_ENV=${UNIQUE_VALUE}envpasswordless
export ACA_NAME=${UNIQUE_VALUE}acapasswordless
Ardından, aşağıdaki komutu kullanarak bir kaynak grubu oluşturun:
az group create \
--name $RESOURCE_GROUP_NAME \
--location $LOCATION
PostgreSQL için Azure Veritabanı esnek sunucu örneği oluşturma
PostgreSQL için Azure Veritabanı esnek sunucusu, veritabanı yönetimi işlevleri ve yapılandırma ayarları üzerinde daha ayrıntılı denetim ve esneklik sağlamak üzere tasarlanmış tam olarak yönetilen bir veritabanı hizmetidir. Bu bölümde, Azure CLI kullanarak PostgreSQL için Azure Veritabanı esnek sunucu örneğinin nasıl oluşturulacağı gösterilmektedir. Daha fazla bilgi için bkz. Hızlı Başlangıç: PostgreSQL için Azure Veritabanı - Esnek Sunucuörneği oluşturma.
Aşağıdaki komutu kullanarak PostgreSQL için Azure Veritabanı esnek sunucu örneği oluşturun:
az postgres flexible-server create \
--name $DB_SERVER_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--database-name $DB_NAME \
--public-access None \
--sku-name Standard_B1ms \
--tier Burstable \
--active-directory-auth Enabled
Sunucu, veritabanı, yönetici kullanıcı ve güvenlik duvarı kurallarının oluşturulması birkaç dakika sürer. Komut başarılı olursa, çıkış aşağıdaki örneğe benzer şekilde görünür:
{
"connectionString": "postgresql://REDACTED:REDACTED@<DB_SERVER_NAME>.postgres.database.azure.com/<DB_NAME>?sslmode=require",
"databaseName": "<DB_NAME>",
"host": "<DB_SERVER_NAME>.postgres.database.azure.com",
"id": "/subscriptions/REDACTED/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<DB_SERVER_NAME>",
"location": "East US",
"password": "REDACTED",
"resourceGroup": "<RESOURCE_GROUP_NAME>",
"skuname": "Standard_B1ms",
"username": "REDACTED",
"version": "13"
}
Aşağıdaki komutları kullanarak geçerli oturum açmış kullanıcıyı Microsoft Entra Admin olarak PostgreSQL için Azure Veritabanı Esnek Sunucu örneğine ekleyin:
ENTRA_ADMIN_NAME=$(az ad signed-in-user show --query userPrincipalName -o tsv)
az postgres flexible-server ad-admin create \
--resource-group $RESOURCE_GROUP_NAME \
--server-name $DB_SERVER_NAME \
--display-name $ENTRA_ADMIN_NAME \
--object-id $(az ad signed-in-user show --query id -o tsv)
Başarılı çıkış, özelliğini "type": "Microsoft.DBforPostgreSQL/flexibleServers/administrators"içeren bir JSON nesnesidir.
Microsoft Azure Container Registry örneği oluşturma
Quarkus bulutta yerel bir teknoloji olduğundan, Container Apps'te çalışan kapsayıcılar oluşturmak için yerleşik desteğe sahiptir. Container Apps, tamamen çalıştırılacak kapsayıcı görüntülerini bulduğu bir kapsayıcı kayıt defterine sahip olmasına bağlıdır. Container Apps, Azure Container Registry için yerleşik desteğe sahiptir.
Container Registry örneğini oluşturmak için az acr create komutunu kullanın. Aşağıdaki örnek, ortam değişkeninizin ${REGISTRY_NAME}değeriyle adlı n Container Registry örneği oluşturur:
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--location ${LOCATION} \
--name $REGISTRY_NAME \
--sku Basic
Kısa bir süre sonra aşağıdaki satırları içeren JSON çıktısını görmeniz gerekir:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "<YOUR_RESOURCE_GROUP>",
Aşağıdaki komutu kullanarak kapsayıcı kayıt defteri örneğinin oturum açma sunucusunu alın:
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
echo $LOGIN_SERVER
Docker'ınızı Azure Container Registry örneğine bağlama
Kapsayıcı kayıt defteri örneğinde oturum açın. Oturum açmak, görüntü göndermenizi sağlar. Kayıt defterinde oturum açmak için aşağıdaki komutu kullanın:
az acr login --name $REGISTRY_NAME
Kapsayıcı kayıt defteri örneğinde başarıyla oturum açtıysanız, komut çıktısının sonunda Login Succeeded görmeniz gerekir.
Ortam oluşturun
Azure Container Apps'teki bir ortam, bir grup kapsayıcı uygulaması çevresinde güvenli bir sınır oluşturur. Aynı ortama dağıtılan Container Apps aynı sanal ağa dağıtılır ve günlükleri aynı Log Analytics çalışma alanına yazar.
Azure Container Apps ortamını ilk kez oluşturuyorsanız, büyük olasılıkla Microsoft.App ve Microsoft.OperationalInsights ad alanlarını kaydetmeniz gerekir. Ad alanlarını kaydetmek için aşağıdaki komutları kullanın:
az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.OperationalInsights --wait
Şimdi, aşağıdaki örnekte gösterildiği gibi bir ortam oluşturmak için az containerapp env create komutunu kullanın:
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--location $LOCATION \
--name $ACA_ENV
Uzantı yüklemeniz istenirse Y yanıtlayın.
Bulut yerel yapılandırmasını özelleştirme
Bulutta yerel bir teknoloji olan Quarkus, kapsayıcı görüntülerini otomatik olarak oluşturma olanağı sunar. Daha fazla bilgi için bkz . Kapsayıcı Görüntüleri. Geliştiriciler daha sonra uygulama görüntüsünü hedef kapsayıcılı platforma (örneğin Azure Container Apps) dağıtabilir.
Kapsayıcı görüntüsünü oluşturmak için aşağıdaki komutu kullanarak uzantıyı container-image-jib yerel terminalinize ekleyin:
quarkus ext add container-image-jib
Quarkus, uzantının arasında yer aldığından emin olmak için POM'yi <dependencies>değiştirir.
JBangadlı bir şey yüklemeniz istenirse evet yanıtlayın ve yüklenmesine izin verin.
Çıktı aşağıdaki örnekteki gibi görünmelidir:
[SUCCESS] ✅ Extension io.quarkus:quarkus-container-image-jib has been installed
pom.xml dosyasını açtığınızda uzantı tarafından container-image-jib aşağıdaki bağımlılıkların eklendiğini görmeniz gerekir:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-container-image-jib</artifactId>
</dependency>
Ardından, PostgreSQL için Azure Veritabanı Esnek Sunucu ile parolasız kimlik doğrulamasını desteklemek için pom.xml dosyasına aşağıdaki bağımlılıkları ekleyin:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.1.20</version>
</dependency>
Quarkus, bulutta yerel bir teknoloji olarak yapılandırma profillerini destekler. Quarkus aşağıdaki üç yerleşik profile sahiptir:
-
dev- Geliştirme modundayken etkinleştirilir. -
test- Testler çalıştırılırken etkinleştirilir. -
prod- Geliştirme veya test modunda çalışmadığında varsayılan profil.
Quarkus gerektiğinde herhangi bir sayıda adlandırılmış profili destekler.
Bu bölümdeki kalan adımlar sizi src/main/resources/application.properties dosyasındaki değerleri açıklamayı kaldırmaya ve özelleştirmeye yönlendirir.
# %prod. ile başlayan tüm satırların başındaki # karakterini kaldırarak yorumdan çıkarıldıklarından emin olun.
Ön ek, %prod. profilde çalıştırılırken bu özelliklerin prod etkin olduğunu gösterir. Yapılandırma profilleri hakkında daha fazla bilgi için Quarkus belgelerine bakın.
Veritabanı yapılandırmasını inceleme
Özelliklerin açıklamasını kaldırdıktan sonra, src/main/resources/application.properties dosyasındaki veritabanı yapılandırması aşağıdaki örnekteki gibi görünmelidir:
# Database configurations
%prod.quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.jdbc.url=
%prod.quarkus.datasource.username=
%prod.quarkus.datasource.password=
%prod.quarkus.hibernate-orm.database.generation=create
%prod.quarkus.hibernate-orm.sql-load-script=no-file
PostgreSQL için Azure Veritabanı esnek sunucusuyla parolasız kimlik doğrulaması kullanılırken gerekli olmadığından %prod.quarkus.datasource.password özelliğini kaldırın. Diğer veritabanı bağlantısıyla ilgili özellikleri %prod.quarkus.datasource.jdbc.url ve %prod.quarkus.datasource.username değerlerini aşağıdaki örnekte gösterildiği gibi güncelleştirin. Son yapılandırma aşağıdaki örneğe benzer olmalıdır:
# Database configurations
%prod.quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://${AZURE_POSTGRESQL_HOST}:${AZURE_POSTGRESQL_PORT}/${AZURE_POSTGRESQL_DATABASE}?\
authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin\
&sslmode=require
%prod.quarkus.datasource.username=${AZURE_POSTGRESQL_USERNAME}
%prod.quarkus.hibernate-orm.database.generation=create
%prod.quarkus.hibernate-orm.sql-load-script=no-file
, ${AZURE_POSTGRESQL_HOST}, ${AZURE_POSTGRESQL_PORT}ve ${AZURE_POSTGRESQL_DATABASE} değerleri, bu makalenin ${AZURE_POSTGRESQL_USERNAME}devamında Hizmet Bağlayıcısı parolasız uzantısı kullanılarak çalışma zamanında Azure Container Apps ortamı tarafından sağlanır.
Genellikle veritabanında kalıcı olan verilerin bırakılıp üretim ortamındaki örnek verilerle yeniden doldurulmasını beklemezsiniz. Bu nedenle, uygulamasının şemayı yalnızca ilk başlangıçta mevcut olmadığında oluşturması için quarkus.hibernate-orm.database.generation şemasının olarak create belirtildiğini görebilirsiniz. Ayrıca, hibernate-orm.sql-load-scriptno-fileolarak belirtildiğinden veritabanı önceden herhangi bir örnek veriyle doldurulmuyor. Bu ayar, uygulamayı daha önce geliştirme modunda yerel olarak çalıştırdığınızdan farklıdır. ve için quarkus.hibernate-orm.database.generationhibernate-orm.sql-load-script geliştirme modundaki varsayılan değerler sırasıyla ve drop-and-create şeklindedirimport.sql; bu da uygulamanın veritabanı şemasını her zaman bırakması ve yeniden oluşturması ve import.sql tanımlanan verileri yüklemesi anlamına gelir.
import.sql dosyası Quarkus'tan bir kolaylık tesisidir.
Quarkus jar dosyasında src/main/resources/import.sql dosyası varsa ve özelliğinin hibernate-orm.sql-load-script değeri iseimport.sql, bu dosyadaki SQL DML deyimleri uygulamanın başlangıç zamanında yürütülür.
PostgreSQL için Azure Veritabanı esnek sunucusuyla Quarkus uygulamanızı yerel olarak test edin
Quarkus uygulamasını Azure Container Apps'e dağıtmadan önce PostgreSQL için Azure Veritabanı esnek sunucu örneğine bağlantıyı yerel olarak test edin.
İlk olarak, aşağıdaki komutları kullanarak yerel IP adresini PostgreSQL için Azure Veritabanı esnek sunucu örneği güvenlik duvarı kurallarına ekleyin:
export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az postgres flexible-server firewall-rule create \
--resource-group $RESOURCE_GROUP_NAME \
--name $DB_SERVER_NAME \
--rule-name $DB_SERVER_NAME-database-allow-local-ip \
--start-ip-address $AZ_LOCAL_IP_ADDRESS \
--end-ip-address $AZ_LOCAL_IP_ADDRESS
Ardından, önceki terminalinizde aşağıdaki ortam değişkenlerini ayarlayın. Bu ortam değişkenleri, yerel olarak çalışan Quarkus uygulamasından PostgreSQL için Azure Veritabanı esnek sunucu örneğine bağlanmak için kullanılır:
export AZURE_POSTGRESQL_HOST=${DB_SERVER_NAME}.postgres.database.azure.com
export AZURE_POSTGRESQL_PORT=5432
export AZURE_POSTGRESQL_DATABASE=${DB_NAME}
export AZURE_POSTGRESQL_USERNAME=${ENTRA_ADMIN_NAME}
PostgreSQL için Azure Veritabanı esnek sunucu örneğine bağlantıyı test etmek için Quarkus uygulamasını yerel olarak çalıştırın. Uygulamayı üretim modunda başlatmak için aşağıdaki komutları kullanın:
mvn clean package -DskipTests
java -jar target/quarkus-app/quarkus-run.jar
Todo uygulamasına erişmek için http://localhost:8080için yeni bir web tarayıcısı açın. Herhangi bir Todo öğesi olmadan uygulamayı geliştirme modunda yerel olarak çalıştırdığınızda gördüğünüz Todo uygulamasının aynısını görmeniz gerekir.
Uygulamayı durdurmak için Control+Ctuşlarına basın.
Kapsayıcı görüntüsünü oluşturma ve kapsayıcı kayıt defterine gönderme
Şimdi uygulamanın kendisini oluşturmak için aşağıdaki komutu kullanın. Bu komut, kapsayıcı görüntüsünü oluşturmak için Jib uzantısını kullanır.
export TODO_QUARKUS_IMAGE_NAME=todo-quarkus-aca
export TODO_QUARKUS_IMAGE_TAG=${LOGIN_SERVER}/${TODO_QUARKUS_IMAGE_NAME}:1.0
quarkus build -Dquarkus.container-image.build=true -Dquarkus.container-image.image=${TODO_QUARKUS_IMAGE_TAG} --no-tests
Çıktı ile BUILD SUCCESSbitmelidir.
Aşağıdaki örnekte gösterildiği gibi docker komut satırını (CLI) kullanarak kapsayıcı görüntüsünün de oluşturulup oluşturulmadığını doğrulayabilirsiniz:
docker images | grep ${TODO_QUARKUS_IMAGE_NAME}
Çıktı aşağıdaki örneğe benzer:
<LOGIN_SERVER_VALUE>/todo-quarkus-aca 1.0 0804dfd834fd 2 minutes ago 407MB
Aşağıdaki komutu kullanarak kapsayıcı görüntülerini kapsayıcı kayıt defterine gönderin:
docker push ${TODO_QUARKUS_IMAGE_TAG}
Çıkış aşağıdaki örneğe benzer görünmelidir:
The push refers to repository [<LOGIN_SERVER_VALUE>/todo-quarkus-aca]
188a550fce3d: Pushed
4e3afea591e2: Pushed
1db0eba807a6: Pushed
c72d9ccda0b2: Pushed
d7819b8a2d18: Pushed
d0e5cba6b262: Pushed
e0bac91f0f10: Pushed
1.0: digest: sha256:f9ccb476e2388efa0dfdf817625a94f2247674148a69b7e4846793e63c8be994 size: 1789
Quarkus uygulamasını Azure Container Apps'e dağıtma
Uygulama görüntüsünü kapsayıcı kayıt defterine ilettiğinize göre, kapsayıcı kayıt defterinden görüntüyü çektikten sonra uygulamayı çalıştırmak üzere bir Azure Container Apps örneği oluşturmak için aşağıdaki komutu kullanın:
az containerapp create \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--image $TODO_QUARKUS_IMAGE_TAG \
--environment $ACA_ENV \
--registry-server $LOGIN_SERVER \
--registry-identity system \
--target-port 8080 \
--ingress 'external' \
--min-replicas 1
Başarılı çıkış, özelliğini "type": "Microsoft.App/containerApps"içeren bir JSON nesnesidir.
Ardından, aşağıdaki adımları kullanarak Service Connector kullanarak PostgreSQL için Azure Veritabanı Esnek Sunucu örneğini kapsayıcı uygulamasına bağlayın:
Aşağıdaki komutu kullanarak Azure CLI için Hizmet Bağlayıcısı parolasız uzantısını yükleyin:
az extension add --name serviceconnector-passwordless --upgrade --allow-preview trueAşağıdaki komutu kullanarak sistem tarafından atanan yönetilen kimlikle veritabanını kapsayıcı uygulamasına bağlayın:
az containerapp connection create postgres-flexible \ --resource-group $RESOURCE_GROUP_NAME \ --name $ACA_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --server $DB_SERVER_NAME \ --database $DB_NAME \ --system-identity \ --container $ACA_NAMEBaşarılı çıkış, özelliğini
"type": "microsoft.servicelinker/linkers"içeren bir JSON nesnesidir.
Aşağıdaki komutu kullanarak Todo uygulamasına erişmek için tam URL alın:
export QUARKUS_URL=https://$(az containerapp show \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--query properties.configuration.ingress.fqdn -o tsv)
echo $QUARKUS_URL
değerine ${QUARKUS_URL}yeni bir web tarayıcısı açın. Web sayfası doğru şekilde işlenmiyorsa, bir süre bekleyin ve sayfayı yenileyin.
Ardından, metniyle Deployed the Todo app to Container Appsyeni bir yapılacaklar öğesi ekleyin. Tamamlandı olarak işaretlemek için bu öğeyi seçin.
Aşağıdaki örnekte gösterildiği gibi, PostgreSQL için Azure Veritabanı depolanan tüm yapılacaklar öğelerini almak için RESTful API'sine (/api) erişin:
curl --verbose -k ${QUARKUS_URL}/api | jq .
Çıktı aşağıdaki örnekteki gibi görünmelidir:
* Connected to <aca-name>.<random-id>.eastus.azurecontainerapps.io (20.231.235.79) port 443 (#0)
> GET /api HTTP/2
> Host: <aca-name>.<random-id>.eastus.azurecontainerapps.io
> user-agent: curl/7.88.1
> accept: */*
>
< HTTP/2 200
< content-length: 88
< content-type: application/json;charset=UTF-8
<
[
{
"id": 1,
"title": "Deployed the Todo app to Container Apps",
"completed": true,
"order": 1,
"url": null
}
]
Veritabanının güncelleştirildiğini doğrulayın
Veritabanının yeni yapılacaklar öğesiyle güncelleştirildiğini doğrulamak için aşağıdaki komutu kullanın:
export ACCESS_TOKEN=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)
az postgres flexible-server execute \
--admin-user $ENTRA_ADMIN_NAME \
--admin-password $ACCESS_TOKEN \
--name $DB_SERVER_NAME \
--database-name $DB_NAME \
--querytext "select * from todo;"
Uzantı yüklemeniz istenirse Y yanıtlayın.
Çıktı aşağıdaki örneğe benzer görünmelidir ve daha önce gösterilen Todo uygulama GUI'sinde aynı öğeyi içermelidir:
Successfully connected to <DB_SERVER_NAME>.
Ran Database Query: 'select * from todo;'
Retrieving first 30 rows of query output, if applicable.
Closed the connection to <DB_SERVER_NAME>
[
{
"completed": true,
"id": 1,
"ordering": 1,
"title": "Deployed the Todo app to Container Apps",
"url": null
}
]
İşiniz bittiğinde, aşağıdaki komutu kullanarak yerel IP adresinizin PostgreSQL için Azure Veritabanı esnek sunucu örneğine erişmesine izin veren güvenlik duvarı kuralını silin:
az postgres flexible-server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--name $DB_SERVER_NAME \
--rule-name $DB_SERVER_NAME-database-allow-local-ip \
--yes
Kaynakları temizleme
Azure ücretlerinden kaçınmak için gereksiz kaynakları temizlemeniz gerekir. Küme artık gerekli olmadığında kaynak grubunu, kapsayıcı hizmetini, kapsayıcı kayıt defterini ve tüm ilgili kaynakları kaldırmak için az group delete komutunu kullanın.
git reset --hard
docker rmi ${TODO_QUARKUS_IMAGE_TAG}
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Quarkus geliştirme modu tarafından oluşturulan ve docker rmi kapsayıcı görüntülerini silmek postgres için de kullanabilirsiniztestcontainers.