Quarkus-alkalmazás üzembe helyezése az Azure Container Appsben

Befejeződött

Ebben a leckében az Azure Container Apps-környezetet az Azure CLI használatával hozza létre.

A Dockerfile beállítása a Quarkus-alkalmazáshoz

A Container Apps tárolóalapú alkalmazások üzembe helyezésére szolgál. Ezért először egy Docker-rendszerképbe kell tárolóba helyeznie a Quarkus alkalmazást. Ez a folyamat egyszerű, mert a Quarkus Maven beépülő modul már létrehozott néhány Docker-fájlt a src/main/dockeralatt.

Ezzel a paranccsal átnevezheti az egyik dockerfile-t, a Dockerfile.jvm fájlt Dockerfile-ra , és helyezze át a gyökérmappába:

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

Cserélje le a dockerfile hosszú megjegyzése utáni tartalmat a következőre:

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

Ez a Dockerfile azt várja, hogy a Quarkus-alkalmazás quarkus-run.jar fájlként legyen csomagolva. Ez a név a Quarkus-alkalmazás alapértelmezett neve, ha JAR-fájlként van csomagolva. Győződjön meg arról, hogy a Quarkus-alkalmazás JAR-fájlként van csomagolva. Ehhez futtassa a következő Maven-parancsot:

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

Ez a parancs egy JAR-fájlba csomagolja a Quarkus-alkalmazást, és létrehoz egy quarkus-run.jar fájlt a target/quarkus-app mappában.

A Container Apps-környezet létrehozása és a tároló üzembe helyezése

Most, hogy a Dockerfile a megfelelő helyen van, létrehozhatja a Container Apps-környezetet, és egyetlen Azure CLI-paranccsal telepítheti a tárolót. Futtassa a következő parancsot a projekt gyökerénél:

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

Ez a parancs számos műveletet hajt végre:

  • Létrehoz egy Container Apps-környezetet, ha az nem létezik
  • Létrehoz egy Azure-adatbázist, ha az nem létezik
  • Log Analytics-munkaterületet hoz létre, ha nem létezik
  • Létrehozza a Docker-rendszerképet, és leküldi az Azure-adatbázisba
  • A Docker-rendszerkép üzembe helyezése a Container Apps-környezetben

A az containerapp up parancs futtatása némi időt vesz igénybe. A következőhöz hasonló kimenetnek kell megjelennie:

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! 

Az üzembe helyezés ellenőrzése

Több módon is ellenőrizheti, hogy az üzembe helyezés sikeres volt-e. A legegyszerűbb módszer az erőforráscsoport megkeresése az Azure Portalon. Az alábbihoz hasonló erőforrásokat kell látnia:

Képernyőkép az üzembe helyezett alkalmazásról.

Az üzembe helyezést az alábbi parancs futtatásával is ellenőrizheti. Felsorolja a az containerapp up parancs által létrehozott összes erőforrást.

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

A következőhöz hasonló kimenetnek kell megjelennie:

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

Az üzembe helyezett alkalmazás ellenőrzése

Most már ellenőrizheti az üzembe helyezett alkalmazást. Először le kell kérnie az alkalmazás URL-címét. A következő parancs futtatásával szerezheti be:

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"

Az alkalmazás készen áll a(z) https://<app-name>.azurecontainerapps.io/helyen. Figyelje meg a https protokollt. Ezt a protokollt azért használja a rendszer, mert az alkalmazás TLS-tanúsítvánnyal van üzembe helyezve. Az alkalmazás teszteléséhez használhatja a cURL-t:

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

Az adatok lekérése új cURL-kéréssel:

curl https://$AZ_APP_URL/api/todos

Ez a parancs az adatbázis összes to-do elemének listáját adja vissza:

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

Ha ezt a parancsot futtatja, az új teendők létrehozásakor streamelheti a tároló naplóit:

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

Futtasson további cURL-parancsokat. A terminálban látnia kell, ahogy a naplók görgetve megjelennek.

curl https://$AZ_APP_URL/api/todos

Jegyzet

Az URL-címet egy webböngészőben is megnyithatja a to-do elemek listájának visszaadásához.