Bereitstellen einer Quarkus-Anwendung in Azure Container Apps
In dieser Lektion erstellen Sie die Azure-Container-Apps-Umgebung mithilfe der Azure CLI.
Einrichten der Dockerfile für die Dockerus-Anwendung
Container-Apps werden verwendet, um containerisierte Anwendungen bereitzustellen. Daher müssen Sie zuerst die Dockerus-Anwendung in ein Docker-Image containern. Dieser Prozess ist einfach, da das Plugin Von Quarkus Maven bereits einige Dockerfiles unter src/main/dockergeneriert hat.
Verwenden Sie diesen Befehl, um eine der folgenden Dockerfiles umzubenennen, Dockerfile.jvm, um dockerfile zu und in den Stammordner zu verschieben:
mv src/main/docker/Dockerfile.jvm ./Dockerfile
Ersetzen Sie den Inhalt nach dem langen Kommentar in der Dockerfile-Datei durch Folgendes:
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" ]
In dieser Dockerfile-Datei wird erwartet, dass die Dockerus-Anwendung als quarkus-run.jar Datei gepackt wird. Dieser Name ist der Standardname für die Quarkus-Anwendung, wenn er als JAR-Datei gepackt wird. Sie müssen sicherstellen, dass die Quarkus-Anwendung als JAR-Datei verpackt ist. Führen Sie dazu den folgenden Maven-Befehl aus:
./mvnw package # On Mac or Linux
mvnw.cmd package # On Windows
Mit diesem Befehl wird die Anwendung Tierkus in eine JAR-Datei verpackt und eine quarkus-run.jar Datei im ordner Ziel-/Quarkus-App generiert.
Erstellen der Container-Apps-Umgebung und Bereitstellen des Containers
Nachdem sich die Dockerfile-Datei nun am richtigen Speicherort befindet, können Sie die Container-Apps-Umgebung erstellen und den Container mithilfe eines einzigen Azure CLI-Befehls bereitstellen. Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus:
az containerapp up \
--name "$AZ_CONTAINERAPP" \
--environment "$AZ_CONTAINERAPP_ENV" \
--location "$AZ_LOCATION" \
--resource-group "$AZ_RESOURCE_GROUP" \
--ingress external \
--target-port 8080 \
--source .
Dieser Befehl führt mehrere Aktionen aus:
- Erstellt eine Container-Apps-Umgebung, wenn sie nicht vorhanden ist
- Erstellt eine Azure-Registrierung, wenn sie nicht vorhanden ist
- Erstellt einen Log Analytics-Arbeitsbereich, wenn er nicht vorhanden ist
- Erstellt das Docker-Image und pusht es an die Azure-Registrierung.
- Stellt das Docker-Image in der Container-Apps-Umgebung bereit.
Der Befehl az containerapp up dauert einige Zeit, bis der Befehl ausgeführt wird. Es sollte eine Ausgabe angezeigt werden, die etwa wie folgt ist:
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!
Überprüfen der Bereitstellung
Sie können überprüfen, ob die Bereitstellung auf verschiedene Arten erfolgreich war. Die einfachste Möglichkeit besteht darin, im Azure-Portalnach Ihrer Ressourcengruppe zu suchen. Es sollten Ressourcen wie die folgenden angezeigt werden:
Sie können die Bereitstellung auch überprüfen, indem Sie den folgenden Befehl ausführen. Er listet alle Ressourcen auf, die vom Befehl az containerapp up erstellt wurden.
az resource list \
--location "$AZ_LOCATION" \
--resource-group "$AZ_RESOURCE_GROUP" \
--output table
Es sollte eine Ausgabe angezeigt werden, die der folgenden ähnelt:
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
Überprüfen der bereitgestellten Anwendung
Sie können nun die bereitgestellte Anwendung überprüfen. Zuerst müssen Sie die URL der Anwendung abrufen. Sie können ihn abrufen, indem Sie den folgenden Befehl ausführen:
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"
Ihre Anwendung ist bei https://<app-name>.azurecontainerapps.io/bereit. Beachten Sie das https-Protokoll. Dieses Protokoll wird verwendet, da die Anwendung mit einem TLS-Zertifikat bereitgestellt wird. Um die Anwendung zu testen, können Sie cURL verwenden:
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
Abrufen der Daten mithilfe einer neuen cURL-Anforderung:
curl https://$AZ_APP_URL/api/todos
Dieser Befehl gibt die Liste aller to-do Elemente aus der Datenbank zurück:
[
{
"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
}
]
Wenn Sie diesen Befehl ausführen, können Sie die Protokolle für Ihren Container streamen, wenn Sie neue Aufgaben erstellen:
az containerapp logs show \
--name "$AZ_CONTAINERAPP" \
--resource-group "$AZ_RESOURCE_GROUP" \
--follow
Führen Sie weitere cURL-Befehle aus. Sie sollten die Protokolle sehen, die im Terminal scrollen.
curl https://$AZ_APP_URL/api/todos
Hinweis
Sie können die URL auch in einem Webbrowser öffnen, damit eine Liste der To-do-Elemente zurückgegeben wird.