Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se muestra cómo compilar e implementar una aplicación en Azure Container Apps desde el código fuente de la máquina en el lenguaje de programación preferido.
En este tutorial, hará lo siguiente:
- Cree una aplicación web simple.
- Cree un Dockerfile asociado para la aplicación.
- Cree una imagen a partir del código compilado e insértela en un registro de contenedor.
- Use la identidad administrada para acceder de forma segura al registro de contenedor.
- Implemente el contenedor en Azure Container Apps.
- Vea la aplicación en un explorador para comprobar la implementación.
Requisitos previos
Para completar este proyecto, necesita los siguientes elementos:
| Requisito | Instructions |
|---|---|
| Cuenta de Azure | Si no tiene ninguna cuenta, cree una gratuita. Necesita el permiso Colaborador o Propietario en la suscripción de Azure para continuar. Consulte Asignación de roles de Azure mediante Azure Portal para obtener más información. |
| CLI de Azure | Instale la CLI de Azure o actualice a la última versión. La Azure Developer CLI (comandos azd) está disponible a través de la CLI de Azure. |
En función de su elección de lenguaje, es posible que también tenga que instalar el entorno de ejecución, el SDK y otras dependencias adecuados.
Instale el SDK de .NET.
Creación de la aplicación local
En los pasos siguientes se muestran el código y las dependencias necesarios para compilar una aplicación de ejemplo que se va a implementar en Azure Container Apps.
Nota:
Si desea usar otro lenguaje distinto de los enumerados, escriba el siguiente mensaje en el modelo de IA preferido.
Antes de enviar el mensaje, reemplace <LANGUAGE> por el lenguaje que prefiera.
Generate the simplest possible "hello world" web server in idiomatic <LANGUAGE>.
Make sure to include any dependencies required for the application to run locally and in production.
Cree y ejecute el código fuente.
Cree un nuevo proyecto de C#.
dotnet new webapp --name MyAcaDemo --language C#Cambie a la carpeta MyAcaDemo.
cd MyAcaDemoAbra
Program.csen un editor de código y reemplace el contenido por el código siguiente.public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); webBuilder.UseUrls("http://*:8080"); }); }La implementación de la clase
Programcon este código crea la base de una aplicación web. A continuación, cree una clase responsable de devolver una página web como respuesta.En la misma carpeta, cree un nuevo archivo denominado
Startup.csy escriba el código siguiente.public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Hello World!"); }); }); } }Ahora, cuando se realiza una solicitud a la aplicación web, se devuelve el texto "Hola mundo". Para comprobar que el código se está ejecutando correctamente en la máquina local, compile el proyecto en la configuración de versión.
dotnet build -c ReleaseA continuación, ejecute la aplicación para comprobar que el código se ha implementado correctamente.
dotnet run --configuration ReleaseUna vez que compruebe que la aplicación funciona según lo previsto, puede detener el servidor local y pasar a crear un Dockerfile para que pueda implementar la aplicación en Container Apps.
En la carpeta MyAcaDemo, cree un archivo denominado
Dockerfiley agregue el código siguiente.FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY . . RUN dotnet publish -c Release -o /app/publish FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final WORKDIR /app COPY --from=build /app/publish . EXPOSE 8080 ENTRYPOINT ["dotnet", "MyAcaDemo.dll"]Ahora que tiene el código y un Dockerfile listo, puede implementar la aplicación en Azure Container Apps.
Creación de recursos de Azure
Inicie sesión en Azure desde la CLI con el comando siguiente. Para completar el proceso de autenticación, asegúrese de seguir todas las indicaciones.
az loginInstale o actualice la extensión de Azure Container Apps para la CLI.
az extension add --name containerapp --upgradeNota:
Si recibe errores sobre los parámetros que faltan al ejecutar comandos
az containerapp, asegúrese de tener instalada la última versión de la extensión de Azure Container Apps.Ahora que la configuración de la CLI de Azure está completa, puede definir un conjunto de variables de entorno.
Antes de ejecutar el siguiente comando, revise los valores proporcionados.
La ubicación se configura como Centro de EE. UU., pero puede cambiar a una ubicación más cercana si lo prefiere.
LOCATION="CentralUS" RESOURCE_GROUP="my-demo-group" IDENTITY_NAME="my-demo-identity" ENVIRONMENT="my-demo-environment" REGISTRY_NAME="mydemoregistry$(openssl rand -hex 4)" CONTAINER_APP_NAME="my-demo-app"El comando
mydemoregistry$(openssl rand -hex 4)genera una cadena aleatoria que se usará como nombre del registro de contenedor. Los nombres del Registro deben ser únicos globalmente, por lo que esta cadena ayuda a garantizar que los comandos se ejecuten correctamente.Cree un grupo de recursos para organizar los servicios relacionados con la implementación de la aplicación contenedora.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --output noneCree una identidad administrada asignada por el usuario y obtenga su identificador con los siguientes comandos.
En primer lugar, cree la identidad administrada.
az identity create \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --output noneAhora, establezca el identificador de identidad en una variable para su uso posterior.
IDENTITY_ID=$(az identity show \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)Cree un entorno de Container Apps para hospedar la aplicación mediante el comando siguiente.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --mi-user-assigned $IDENTITY_ID \ --output noneCree una instancia de Azure Container Registry (ACR) en el grupo de recursos. El registro almacena la imagen de contenedor.
az acr create \ --resource-group $RESOURCE_GROUP \ --name $REGISTRY_NAME \ --sku Basic \ --output noneAsigne la identidad administrada asignada por el usuario a la instancia del registro de contenedor con el comando siguiente.
az acr identity assign \ --identities $IDENTITY_ID \ --name $REGISTRY_NAME \ --resource-group $RESOURCE_GROUP \ --output none
Compilación e inserción de la imagen en un registro
Compile e inserte la imagen de contenedor en la instancia del registro de contenedor con el comando siguiente.
az acr build \
-t $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
-r $REGISTRY_NAME .
Este comando aplica la etiqueta helloworld a la imagen de contenedor.
Creación de la aplicación de contenedor
Cree la aplicación contenedora con el comando siguiente.
az containerapp create \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
--target-port 8080 \
--ingress external \
--user-assigned $IDENTITY_ID \
--registry-identity $IDENTITY_ID \
--registry-server $REGISTRY_NAME.azurecr.io \
--query properties.configuration.ingress.fqdn
Este comando agrega el rol acrPull a la identidad administrada asignada por el usuario, por lo que puede extraer imágenes del registro de contenedor.
En la tabla siguiente se describen los parámetros usados por este comando.
| Parámetro | Valor | Descripción |
|---|---|---|
name |
$CONTAINER_APP_NAME |
El nombre de la aplicación contenedora. |
resource-group |
$RESOURCE_GROUP |
El grupo de recursos en el que se implementa la aplicación contenedora. |
environment |
$ENVIRONMENT |
Entorno en el que se ejecuta la aplicación contenedora. |
image |
$REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" |
Imagen de contenedor que se va a implementar, incluido el nombre y la etiqueta del Registro. |
target-port |
8080 |
Coincide con el puerto al que escucha la aplicación para las solicitudes. |
ingress |
external |
Hace que la aplicación contenedora sea accesible desde la red pública de Internet. |
user-assigned |
$IDENTITY_ID |
Identidad administrada asignada por el usuario para la aplicación contenedora. |
registry-identity |
registry-identity |
Identidad usada para acceder al registro de contenedor. |
registry-server |
$REGISTRY_NAME.azurecr.io |
Dirección del servidor del registro de contenedor. |
query |
properties.configuration.ingress.fqdn |
Filtra la salida a solo el nombre de dominio completo (FQDN) de la aplicación. |
Una vez completado este comando, devuelve la dirección URL de la nueva aplicación web.
Comprobación de la implementación
Copie la dirección URL de la aplicación en un explorador web. Una vez iniciada la aplicación contenedora, devuelve Hola mundo..
Dado que es la primera vez que se accede a la aplicación, la aplicación puede tardar unos instantes en devolver una respuesta.
Limpieza de recursos
Si no va a usar los recursos de Azure creados en este tutorial, puede quitarlos con un solo comando. Antes de ejecutar el comando, hay un paso siguiente en esta serie de tutoriales que muestra cómo realizar cambios en el código y actualizar la aplicación en Azure.
Si ha terminado y desea quitar todos los recursos de Azure creados en este tutorial, elimine el grupo de recursos con el comando siguiente.
az group delete --name aca-demo
Sugerencia
¿Tiene problemas? Háganoslo saber en GitHub abriendo una incidencia en el repositorio de Azure Container Apps.
Pasos siguientes
A continuación, continúe para obtener información sobre cómo actualizar la aplicación contenedora que ha creado.