Udrul et Quarkus-program til Azure Container Apps

Fuldført

I dette undermodul opretter du Azure Container Apps-miljøet ved hjælp af Kommandolinjegrænsefladen i Azure.

Konfigurer Dockerfile for Quarkus-programmet

Objektbeholderapps bruges til at installere programmer i objektbeholdere. Så du skal først objektbeholderisere Quarkus-programmet til et Docker-billede. Denne proces er let, fordi Quarkus Maven-plug-in'en allerede har genereret nogle Dockerfiles under src/main/docker.

Brug denne kommando til at omdøbe en af disse Dockerfiles Dockerfile.jvmfor at Dockerfile og flytte den til rodmappen:

mv src/main/docker/Dockerfile.jvm ./Dockerfile

Erstat indholdet efter den lange kommentar i Dockerfile med følgende:

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" ]

Denne Dockerfile forventer, at Quarkus-programmet pakkes som en quarkus-run.jar fil. Dette navn er standardnavnet for Quarkus-programmet, når det pakkes som en JAR-fil. Du skal sørge for, at Quarkus-programmet er pakket som en JAR-fil. Det gør du ved at køre følgende Maven-kommando:

./mvnw package    # On Mac or Linux
mvnw.cmd package  # On Windows

Denne kommando pakker Quarkus-programmet i en JAR-fil og genererer en quarkus-run.jar-fil i mappen target/quarkus-app.

Opret beholderappmiljøet, og udrul objektbeholderen

Nu, hvor Dockerfile er på den rigtige placering, kan du oprette miljøet Container Apps og installere objektbeholderen ved hjælp af en enkelt Azure CLI-kommando. Kør følgende kommando i roden af projektet:

az containerapp up \
    --name "$AZ_CONTAINERAPP" \
    --environment "$AZ_CONTAINERAPP_ENV" \
    --location "$AZ_LOCATION" \
    --resource-group "$AZ_RESOURCE_GROUP" \
    --ingress external \
    --target-port 8080 \
    --source .

Denne kommando gør flere ting:

  • Opretter et Objektbeholderapps-miljø, hvis det ikke findes
  • Opretter en Azure-registreringsdatabase, hvis den ikke findes
  • Opretter et Log Analytics-arbejdsområde, hvis det ikke findes
  • Bygger Docker-billedet og overfører det til Azure-registreringsdatabasen
  • Installerer Docker-afbildningen i beholderappmiljøet

Kommandoen az containerapp up tager lidt tid at køre. Du bør kunne se output, der ligner følgende:

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! 

Valider udrulningen

Du kan validere, at installationen er gennemført på flere måder. Den nemmeste måde er at søge efter din ressourcegruppe på Azure Portal. Du bør kunne se ressourcer, der ligner følgende:

Skærmbillede, der viser det installerede program.

Du kan også kontrollere installationen ved at køre følgende kommando. Den viser alle de ressourcer, der er oprettet af kommandoen az containerapp up.

az resource list \
    --location "$AZ_LOCATION" \
    --resource-group "$AZ_RESOURCE_GROUP" \
    --output table

Du bør kunne se output, der ligner dette:

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

Kontrollér det installerede program

Du kan nu bekræfte det installerede program. Først skal du hente URL-adressen til programmet. Du kan hente den ved at køre følgende kommando:

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"

Dit program er klar på https://<app-name>.azurecontainerapps.io/. Bemærk protokollen https. Denne protokol bruges, fordi programmet er installeret med et TLS-certifikat. Hvis du vil teste programmet, kan du bruge 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

Hent dataene ved hjælp af en ny cURL-anmodning:

curl https://$AZ_APP_URL/api/todos

Denne kommando returnerer listen over alle to-do elementer fra databasen:

[
   {
      "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
   }
]

Hvis du kører denne kommando, kan du streame loggene for din objektbeholder, når du opretter nye to-dos:

az containerapp logs show \
    --name "$AZ_CONTAINERAPP" \
    --resource-group "$AZ_RESOURCE_GROUP" \
    --follow

Kør flere cURL-kommandoer. Du bør se loggene rulle i terminalen.

curl https://$AZ_APP_URL/api/todos

Seddel

Du kan også åbne URL-adressen i en webbrowser for at returnere listen over to-do elementer.