Wdrażanie aplikacji Quarkus w usłudze Azure Container Apps

Ukończone

W tej lekcji utworzysz środowisko usługi Azure Container Apps przy użyciu interfejsu wiersza polecenia platformy Azure.

Konfigurowanie pliku Dockerfile dla aplikacji Quarkus

Usługa Container Apps służy do wdrażania konteneryzowanych aplikacji. Dlatego najpierw musisz zkonteneryzować aplikację Quarkus do obrazu platformy Docker. Ten proces jest łatwy, ponieważ wtyczka Quarkus Maven wygenerowała już niektóre pliki Dockerfile w obszarze src/main/docker.

Użyj tego polecenia, aby zmienić nazwę jednego z tych plików Dockerfile, Dockerfile.jvm na Plik Dockerfile i przenieść go do folderu głównego:

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

Zastąp zawartość po długim komentarzu w pliku Dockerfile następującym kodem:

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

Ten plik Dockerfile oczekuje, że aplikacja Quarkus zostanie spakowana jako plik quarkus-run.jar . Ta nazwa jest domyślną nazwą aplikacji Quarkus, gdy jest spakowana jako plik JAR. Upewnij się, że aplikacja Quarkus jest spakowana jako plik JAR. Aby to zrobić, uruchom następujące polecenie Maven:

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

To polecenie pakuje aplikację Quarkus do pliku JAR i generuje plik quarkus-run.jar w folderze target/quarkus-app .

Tworzenie środowiska usługi Container Apps i wdrażanie kontenera

Teraz, gdy plik Dockerfile znajduje się w odpowiedniej lokalizacji, możesz utworzyć środowisko usługi Container Apps i wdrożyć kontener przy użyciu jednego polecenia interfejsu wiersza polecenia platformy Azure. Uruchom następujące polecenie w katalogu głównym projektu:

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

To polecenie wykonuje kilka czynności:

  • Tworzy środowisko usługi Container Apps, jeśli nie istnieje
  • Tworzy rejestr platformy Azure, jeśli nie istnieje
  • Tworzy obszar roboczy usługi Log Analytics, jeśli nie istnieje
  • Kompiluje obraz platformy Docker i wypycha go do rejestru platformy Azure
  • Wdraża obraz Docker do środowiska aplikacji konteneryzowanych

Uruchomienie polecenia az containerapp up zajmuje trochę czasu. Powinny zostać wyświetlone dane wyjściowe podobne do następujących:

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! 

Weryfikowanie wdrożenia

Możesz sprawdzić, czy wdrożenie powiodło się na kilka sposobów. Najprostszym sposobem jest wyszukanie grupy zasobów na portalu Azure . Powinny zostać wyświetlone zasoby podobne do następujących:

Zrzut ekranu przedstawiający wdrożona aplikację.

Możesz również sprawdzić wdrożenie, uruchamiając następujące polecenie. Wyświetla listę wszystkich zasobów utworzonych przez polecenie az containerapp up.

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

Powinny zostać wyświetlone dane wyjściowe podobne do następujących:

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

Weryfikowanie wdrożonej aplikacji

Teraz możesz zweryfikować wdrożona aplikację. Najpierw musisz uzyskać adres URL aplikacji. Możesz go pobrać, uruchamiając następujące polecenie:

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"

Twoja aplikacja jest gotowa na https://<app-name>.azurecontainerapps.io/. Zwróć uwagę na protokół https. Ten protokół jest używany, ponieważ aplikacja jest wdrażana przy użyciu certyfikatu TLS. Aby przetestować aplikację, możesz użyć 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

Pobierz dane przy użyciu nowego żądania cURL:

curl https://$AZ_APP_URL/api/todos

To polecenie zwraca listę wszystkich elementów to-do z bazy danych:

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

Jeśli uruchomisz to polecenie, możesz obserwować dzienniki kontenera podczas dodawania nowych zadań do wykonania.

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

Uruchom więcej poleceń programu cURL. W terminalu powinny przewijać się logi.

curl https://$AZ_APP_URL/api/todos

Notatka

Możesz również otworzyć adres URL w przeglądarce internetowej, aby uzyskać listę elementów to-do.