Wdrażanie aplikacji Quarkus w usłudze Azure Container Apps
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 konteneryzować aplikację Quarkus w obrazie 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. W tym celu uruchom następujące polecenie Narzędzia 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 platformy Docker w środowisku usługi Container Apps
Uruchomienie az containerapp up
polecenia 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 w witrynie Azure Portal. Powinny zostać wyświetlone zasoby podobne do następujących:
Możesz również sprawdzić wdrożenie, uruchamiając następujące polecenie. Wyświetla listę wszystkich zasobów utworzonych przez az containerapp up
polecenie .
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
Uruchamianie wdrożonej aplikacji Quarkus
Teraz możesz uruchomić wdrożona aplikację Quarkus. 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"
Aplikacja jest gotowa pod adresem https://<app-name>.azurecontainerapps.io/
. Zwróć uwagę na https
protokół. Ten protokół jest używany, ponieważ aplikacja jest wdrażana przy użyciu certyfikatu TLS. Aby przetestować aplikację, możesz użyć biblioteki 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 do wykonania 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 przesłać strumieniowo dzienniki dla kontenera podczas tworzenia 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 być widoczne przewijanie dzienników.
curl https://$AZ_APP_URL/api/todos
Uwaga
Możesz również otworzyć adres URL w przeglądarce internetowej, aby zwrócić listę elementów typu „zadanie do wykonania”.