Nasazení aplikace Quarkus do Azure Container Apps
V této lekci vytvoříte prostředí Azure Container Apps pomocí Azure CLI.
Nastavení souboru Dockerfile pro aplikaci Quarkus
Container Apps se používá k nasazení kontejnerizovaných aplikací. Proto musíte nejprve kontejnerizovat aplikaci Quarkus do image Dockeru. Tento proces je snadný, protože modul plug-in Quarkus Maven již vygeneroval některé soubory Dockerfile v části src/main/docker
.
Pomocí tohoto příkazu přejmenujte jeden z těchto souborů Dockerfile, Dockerfile.jvm, na Dockerfile a přesuňte ho do kořenové složky:
mv src/main/docker/Dockerfile.jvm ./Dockerfile
Obsah po dlouhém komentáři v souboru Dockerfile nahraďte následujícím kódem:
FROM registry.access.redhat.com/ubi8/openjdk-17:1.18
ENV LANGUAGE='en_US:en'
# We make four distinct layers so if there are application changes the library layers can be re-used
COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/
COPY --chown=185 target/quarkus-app/*.jar /deployments/
COPY --chown=185 target/quarkus-app/app/ /deployments/app/
COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/
EXPOSE 8080
USER 185
ENV JAVA_OPTS_APPEND="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
ENTRYPOINT [ "/opt/jboss/container/java/run/run-java.sh" ]
Tento soubor Dockerfile očekává, že aplikace Quarkus bude zabalena jako soubor quarkus-run.jar . Tento název je výchozí název aplikace Quarkus, když je zabalený jako soubor JAR. Musíte se ujistit, že je aplikace Quarkus zabalená jako soubor JAR. Provedete to spuštěním následujícího příkazu Mavenu:
./mvnw package # On Mac or Linux
mvnw.cmd package # On Windows
Tento příkaz zabalí aplikaci Quarkus do souboru JAR a vygeneruje quarkus-run.jar soubor ve složce target/quarkus-app .
Vytvoření prostředí Container Apps a nasazení kontejneru
Teď, když je soubor Dockerfile ve správném umístění, můžete vytvořit prostředí Container Apps a nasadit kontejner pomocí jediného příkazu Azure CLI. V kořenovém adresáři projektu spusťte následující příkaz:
az containerapp up \
--name "$AZ_CONTAINERAPP" \
--environment "$AZ_CONTAINERAPP_ENV" \
--location "$AZ_LOCATION" \
--resource-group "$AZ_RESOURCE_GROUP" \
--ingress external \
--target-port 8080 \
--source .
Tento příkaz provede několik věcí:
- Vytvoří prostředí Container Apps, pokud neexistuje.
- Vytvoří registr Azure, pokud neexistuje.
- Vytvoří pracovní prostor služby Log Analytics, pokud neexistuje.
- Vytvoří image Dockeru a nasdílí ji do registru Azure.
- Nasadí image Dockeru do prostředí Container Apps.
Spuštění az containerapp up
příkazu nějakou dobu trvá. Měl by se zobrazit výstup podobný následujícímu:
Using resource group 'rgazure-deploy-quarkus'
Creating ContainerAppEnvironment 'caeazure-deploy-quarkus' in resource group rgazure-deploy-quarkus
No Log Analytics workspace provided.
Generating a Log Analytics workspace with name "workspace-rgazuredeployquarkusEED7"
Creating Azure Container Registry ca001ad52ae7acr in resource group rgazure-deploy-quarkus
Run ID: ca3 was successful after 41s
Creating Containerapp caazure-deploy-quarkus in resource group rgazure-deploy-quarkus
Adding registry password as a secret with name "ca001ad52ae7acrazurecrio-ca001nxc57acr"
Your container app caazure-deploy-quarkus has been created and deployed! Congrats!
Ověření nasazení
Můžete ověřit, že nasazení bylo úspěšné několika způsoby. Nejjednodušším způsobem je vyhledat skupinu prostředků na webu Azure Portal. Měly by se zobrazit prostředky podobné následujícímu:
Nasazení můžete také zkontrolovat spuštěním následujícího příkazu. Zobrazí seznam všech prostředků vytvořených příkazem az containerapp up
.
az resource list \
--location "$AZ_LOCATION" \
--resource-group "$AZ_RESOURCE_GROUP" \
--output table
Měl by se zobrazit výstup podobný tomuto:
Name ResourceGroup Location Type Status
---------------------------------- ---------------------- ---------- ----------------------------------------- --------
caea3a6e0afeacr rgazure-deploy-quarkus eastus Microsoft.ContainerRegistry/registries
psqlazure-deploy-quarkus rgazure-deploy-quarkus eastus Microsoft.DBforPostgreSQL/flexibleServers
caazure-deploy-quarkus rgazure-deploy-quarkus eastus Microsoft.App/containerApps
caeazure-deploy-quarkus rgazure-deploy-quarkus eastus Microsoft.App/managedEnvironments
workspace-rgazuredeployquarkuscDD3 rgazure-deploy-quarkus eastus Microsoft.OperationalInsights/workspaces
Spuštění nasazené aplikace Quarkus
Teď můžete spustit nasazenou aplikaci Quarkus. Nejprve potřebujete získat adresu URL aplikace. Můžete ho získat spuštěním následujícího příkazu:
export AZ_APP_URL=$(
az containerapp show \
--name "$AZ_CONTAINERAPP" \
--resource-group "$AZ_RESOURCE_GROUP" \
--query "properties.configuration.ingress.fqdn" \
--output tsv \
)
echo "AZ_APP_URL=$AZ_APP_URL"
Vaše aplikace je připravená na https://<app-name>.azurecontainerapps.io/
adrese . https
Všimněte si protokolu. Tento protokol se používá, protože aplikace je nasazená s certifikátem TLS. K otestování aplikace můžete použít cURL:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"Configuration","details":"Congratulations, you have set up your Quarkus application correctly!","done": "true"}' \
https://$AZ_APP_URL/api/todos
Načtěte data pomocí nového požadavku cURL:
curl https://$AZ_APP_URL/api/todos
Tento příkaz vrátí seznam všech položek úkolů z databáze:
[
{
"description" : "Take Quarkus MS Learn",
"details" : "Take the MS Learn on deploying Quarkus to Azure Container Apps",
"done" : true,
"id" : 1
},
{
"description" : "Take Azure Container MS Learn",
"details" : "Take the ACA Learn module",
"done" : false,
"id" : 2
},
{
"description" : "Configuration",
"details" : "Congratulations, you have set up your Quarkus application correctly!",
"done" : true,
"id" : 3
}
]
Pokud spustíte tento příkaz, můžete protokoly kontejneru streamovat při vytváření nových úkolů:
az containerapp logs show \
--name "$AZ_CONTAINERAPP" \
--resource-group "$AZ_RESOURCE_GROUP" \
--follow
Spusťte další příkazy cURL. Protokoly by se měly v terminálu posouvat.
curl https://$AZ_APP_URL/api/todos
Poznámka:
Pokud chcete vrátit seznam položek úkolů, můžete tuto adresu URL otevřít také ve webovém prohlížeči.