Nasazení aplikace Quarkus do Azure Container Apps

Dokončeno

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:

Screenshot that shows the deployed application.

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.