Menyebarkan aplikasi Quarkus ke Azure Container Apps
Di unit ini, Anda membuat lingkungan Azure Container Apps dengan menggunakan Azure CLI.
Menyiapkan Dockerfile untuk aplikasi Quarkus
Container Apps digunakan untuk menyebarkan aplikasi kontainer. Jadi, Pertama-tama Anda perlu membuat kontainer aplikasi Quarkus ke dalam gambar Docker. Proses ini mudah karena plugin Quarkus Maven telah menghasilkan beberapa Dockerfiles di bawah src/main/docker.
Gunakan perintah ini untuk mengganti nama salah satu Dockerfiles ini, Dockerfile.jvm, menjadi Dockerfile dan pindahkan ke folder akar:
mv src/main/docker/Dockerfile.jvm ./Dockerfile
Ganti konten setelah komentar panjang di Dockerfile dengan yang berikut ini:
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" ]
Dockerfile ini mengharapkan aplikasi Quarkus dikemas sebagai file quarkus-run.jar . Nama ini adalah nama default untuk aplikasi Quarkus saat dipaketkan sebagai file JAR. Anda perlu memastikan bahwa aplikasi Quarkus dipaketkan sebagai file JAR. Untuk melakukannya, jalankan perintah Maven berikut:
./mvnw package # On Mac or Linux
mvnw.cmd package # On Windows
Perintah ini mengemas aplikasi Quarkus ke dalam file JAR dan menghasilkan file quarkus-run.jar di folder target/quarkus-app .
Membuat lingkungan Container Apps dan menyebarkan kontainer
Sekarang setelah Dockerfile berada di lokasi yang tepat, Anda dapat membuat lingkungan Container Apps dan menyebarkan kontainer dengan menggunakan satu perintah Azure CLI. Jalankan perintah berikut di akar proyek:
az containerapp up \
--name "$AZ_CONTAINERAPP" \
--environment "$AZ_CONTAINERAPP_ENV" \
--location "$AZ_LOCATION" \
--resource-group "$AZ_RESOURCE_GROUP" \
--ingress external \
--target-port 8080 \
--source .
Perintah ini melakukan beberapa hal:
- Membuat lingkungan untuk aplikasi kontainer jika belum ada
- Membuat registri Azure jika tidak ada
- Membuat ruang kerja Log Analytics jika belum ada
- Membangun gambar Docker dan mendorongnya ke registri Azure
- Menyebarkan gambar Docker ke lingkungan Container Apps
Perintah az containerapp up membutuhkan waktu untuk dijalankan. Anda akan melihat output yang mirip dengan yang berikut ini:
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!
Validasi penyebaran
Anda dapat memvalidasi bahwa penyebaran telah berhasil dalam beberapa cara. Cara term mudah adalah mencari grup sumber daya Anda di portal Microsoft Azure . Anda akan melihat sumber daya yang mirip dengan yang berikut ini:
Anda juga dapat memeriksa penyebaran dengan menjalankan perintah berikut. Ini mencantumkan semua sumber daya yang dibuat oleh perintah az containerapp up.
az resource list \
--location "$AZ_LOCATION" \
--resource-group "$AZ_RESOURCE_GROUP" \
--output table
Anda akan melihat output yang mirip dengan ini:
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
Memverifikasi aplikasi yang disebarkan
Anda sekarang dapat memverifikasi aplikasi yang disebarkan. Pertama, Anda perlu mendapatkan URL aplikasi. Anda bisa mendapatkannya dengan menjalankan perintah berikut:
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"
Aplikasi Anda siap di https://<app-name>.azurecontainerapps.io/. Perhatikan protokol https. Protokol tersebut digunakan karena aplikasi disebarkan dengan sertifikat TLS. Untuk menguji aplikasi, Anda dapat menggunakan 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
Ambil data dengan menggunakan permintaan cURL baru:
curl https://$AZ_APP_URL/api/todos
Perintah ini mengembalikan daftar semua item to-do dari database:
[
{
"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
}
]
Jika Menjalankan perintah ini, Anda dapat melakukan streaming log untuk kontainer saat membuat tugas baru:
az containerapp logs show \
--name "$AZ_CONTAINERAPP" \
--resource-group "$AZ_RESOURCE_GROUP" \
--follow
Jalankan lebih banyak perintah cURL. Anda akan melihat log yang bergulir di terminal.
curl https://$AZ_APP_URL/api/todos
Nota
Anda juga dapat membuka URL di browser web untuk mengembalikan daftar item to-do.