Peguntas más frecuentes sobre Azure App Service en LinuxAzure App Service on Linux FAQ

Con el lanzamiento de App Service en Linux, estamos trabajando en incorporar características y realizar mejoras en nuestra plataforma.With the release of App Service on Linux, we're working on adding features and making improvements to our platform. Este artículo proporciona respuestas a preguntas que nuestros clientes nos han formulado recientemente.This article provides answers to questions that our customers have been asking us recently.

Si tiene alguna pregunta, comente este artículo.If you have a question, comment on this article.

Imágenes integradasBuilt-in images

Quiero bifurcar los contenedores de Docker integrados que ofrece la plataforma. ¿Dónde puedo encontrar esos archivos?I want to fork the built-in Docker containers that the platform provides. Where can I find those files?

Puede encontrar todos los archivos de Docker en GitHub.You can find all Docker files on GitHub. Puede encontrar todos los contenedores de Docker en Docker Hub.You can find all Docker containers on Docker Hub.

¿Cuáles son los valores previsibles para la sección del archivo de inicio cuando se configura la pila en tiempo de ejecución?What are the expected values for the Startup File section when I configure the runtime stack?

PilaStack Valor esperadoExpected Value
Java SEJava SE Comando para iniciar la aplicación JAR (por ejemplo, java -jar my-app.jar --server.port=80)the command to start your JAR app (for example, java -jar my-app.jar --server.port=80)
Tomcat, WildflyTomcat, Wildfly Ubicación de un script para realizar las configuraciones necesarias (por ejemplo, /home/site/deployments/tools/startup_script.sh)the location of a script to perform any necessary configurations (for example, /home/site/deployments/tools/startup_script.sh)
Node.jsNode.js Archivo de configuración de PM2 o el archivo de script.the PM2 configuration file or your script file
.Net Core.Net Core Nombre del archivo DLL compilado como dotnet <myapp>.dll.the compiled DLL name as dotnet <myapp>.dll
RubyRuby Script de Ruby con el que quiere inicializar la aplicación.the Ruby script that you want to initialize your app with

Estos comandos o scripts se ejecutan después de que se inicie el contenedor de Docker integrado, pero antes de que se inicie el código de la aplicación.These commands or scripts are executed after the built-in Docker container is started, but before your application code is started.

AdministraciónManagement

¿Qué ocurre al hacer clic en botón de reinicio de Azure Portal?What happens when I press the restart button in the Azure portal?

Esta acción es igual a un reinicio de Docker.This action is the same as a Docker restart.

¿Puedo usar Secure Shell (SSH) para conectarme a la máquina virtual del contenedor de la aplicación?Can I use Secure Shell (SSH) to connect to the app container virtual machine (VM)?

Sí, puede hacerlo a través del sitio de administración de control de código fuente (SCM).Yes, you can do that through the source control management (SCM) site.

Nota

También puede conectarse al contenedor de la aplicación directamente desde la máquina de desarrollo local mediante SSH, SFTP o Visual Studio Code (para aplicaciones de Node.js de depuración en directo).You can also connect to the app container directly from your local development machine using SSH, SFTP, or Visual Studio Code (for live debugging Node.js apps). Para más información, consulte Depuración remota y SSH en App Service en Linux.For more information, see Remote debugging and SSH in App Service on Linux.

¿Cómo se puede crear un plan de App Service en Linux a través de un SDK o una plantilla de Azure Resource Manager?How can I create a Linux App Service plan through an SDK or an Azure Resource Manager template?

Debe establecer el campo reservado del servicio de aplicación en true.You should set the reserved field of the app service to true.

Integración e implementación continuasContinuous integration and deployment

Mi aplicación web sigue usando una imagen de contenedor de Docker antigua después de actualizar la imagen en Docker Hub. ¿Se admite la integración e implementación continuas de contenedores personalizados?My web app still uses an old Docker container image after I've updated the image on Docker Hub. Do you support continuous integration and deployment of custom containers?

Sí, para configurar la integración e implementación continua de Azure Container Registry o Docker Hub, consulte Implementación continua con Web App for Containers.Yes, to set up continuous integration/deployment for Azure Container Registry or DockerHub, by following Continuous Deployment with Web App for Containers. Para registros privados, puede actualizar el contenedor deteniendo y, luego, iniciando la aplicación web.For private registries, you can refresh the container by stopping and then starting your web app. También puede cambiar o agregar una configuración de aplicación ficticia para forzar una actualización del contenedor.Or you can change or add a dummy application setting to force a refresh of your container.

¿Los entornos de ensayo son compatibles?Do you support staging environments?

Sí.Yes.

¿Puedo usar WebDeploy/MSDeploy para implementar mi aplicación web?Can I use WebDeploy/MSDeploy to deploy my web app?

Sí, es necesario establecer un valor de la aplicación llamado WEBSITE_WEBDEPLOY_USE_SCM en false.Yes, you need to set an app setting called WEBSITE_WEBDEPLOY_USE_SCM to false.

Se produce un error en la implementación de GIT de la aplicación cuando se usa la aplicación web de Linux. ¿Cómo puedo solucionar el problema?Git deployment of my application fails when using Linux web app. How can I work around the issue?

Si se produce un error en la implementación de Git en la aplicación web de Linux, puede elegir una de las opciones siguientes para implementar el código de aplicación:If Git deployment fails to your Linux web app, choose one of the following options to deploy your application code:

  • Característica de entrega continua (versión preliminar): puede almacenar el código fuente de la aplicación en un repositorio de Git de Azure DevOps o en un repositorio de GitHub para usar la entrega continua de Azure.Use the Continuous Delivery (Preview) feature: You can store your app’s source code in an Azure DevOps Git repo or GitHub repo to use Azure Continuous Delivery. Para más información, consulte la publicación How to configure Continuous Delivery for Linux web app (Configuración de entrega continua para aplicaciones web de Linux).For more information, see How to configure Continuous Delivery for Linux web app.

  • ZIP deploy API: para usar esta API, use SSH en la aplicación web y vaya a la carpeta en la que desea implementar el código.Use the ZIP deploy API: To use this API, SSH into your web app and go to the folder where you want to deploy your code. Ejecute el código siguiente:Run the following code:

    curl -X POST -u <user> --data-binary @<zipfile> https://{your-sitename}.scm.azurewebsites.net/api/zipdeploy
    

    Si recibe un error que indica que no se encuentra el comando curl, asegúrese de que instalar curl mediante apt-get install curl antes de ejecutar el comando curl anterior.If you get an error that the curl command is not found, make sure you install curl by using apt-get install curl before you run the previous curl command.

Compatibilidad con idiomasLanguage support

Quiero usar sockets web en mi aplicación Node.js. ¿Hay alguna opción o configuración especial que deba establecer?I want to use web sockets in my Node.js application, any special settings, or configurations to set?

Sí, deshabilite perMessageDeflate en el código de Node.js en el servidor.Yes, disable perMessageDeflate in your server-side Node.js code. Por ejemplo, si usa socket.io, use el código siguiente:For example, if you are using socket.io, use the following code:

const io = require('socket.io')(server,{
  perMessageDeflate :false
});

¿Se admiten aplicaciones de .NET Core sin compilar?Do you support uncompiled .NET Core apps?

Sí.Yes.

¿Admite un compositor como un administrador de dependencias para aplicaciones PHP?Do you support Composer as a dependency manager for PHP apps?

Sí, durante una implementación de Git, Kudu debe detectar que va a implementar una aplicación PHP (gracias a la presencia de un archivo composer.lock) y Kudu desencadenará una instalación del compositor.Yes, during a Git deployment, Kudu should detect that you're deploying a PHP application (thanks to the presence of a composer.lock file), and Kudu will then trigger a composer install.

Contenedores personalizadosCustom containers

Utilizo mi propio contenedor personalizado. Deseo que la plataforma monte un recurso compartido de SMB en el directorio /home/.I'm using my own custom container. I want the platform to mount an SMB share to the /home/ directory.

Si el valor de WEBSITES_ENABLE_APP_SERVICE_STORAGE no se ha especificado o es true, el directorio /home/ se compartirá entre instancias de escala y los archivos que se escriben se conservarán al reiniciar.If WEBSITES_ENABLE_APP_SERVICE_STORAGE setting is unspecified or set to true, the /home/ directory will be shared across scale instances, and files written will persist across restarts. Establecer de forma explícita WEBSITES_ENABLE_APP_SERVICE_STORAGE en false deshabilitará el montaje.Explicitly setting WEBSITES_ENABLE_APP_SERVICE_STORAGE to false will disable the mount.

Mi contenedor personalizado tarda mucho tiempo en iniciarse y la plataforma reinicia el contenedor antes de que finalice el inicio.My custom container takes a long time to start, and the platform restarts the container before it finishes starting up.

Puede configurar el tiempo que va a esperar la plataforma antes de reiniciar el contenedor.You can configure the amount of time the platform will wait before it restarts your container. Para ello, establezca el valor WEBSITES_CONTAINER_START_TIME_LIMIT de la aplicación en el valor que desee.To do so, set the WEBSITES_CONTAINER_START_TIME_LIMIT app setting to the value you want. El valor predeterminado es de 230 segundos y el valor máximo es de 1800 segundos.The default value is 230 seconds, and the maximum value is 1800 seconds.

¿Cuál es el formato de la dirección URL del servidor de registro privado?What is the format for the private registry server URL?

Debe escribir la dirección URL completa del registro, incluidos http:// o https://.Provide the full registry URL, including http:// or https://.

¿Cuál es el formato del nombre de la imagen en la opción del registro privado?What is the format for the image name in the private registry option?

Agregue el nombre de la imagen completo, incluida la dirección URL de registro privado (por ejemplo, myacr.azurecr.io/dotnet:latest).Add the full image name, including the private registry URL (for example, myacr.azurecr.io/dotnet:latest). Los nombres de imágenes que usan un puerto personalizado no se pueden especificar a través del portal.Image names that use a custom port cannot be entered through the portal. Para establecer docker-custom-image-name, use la azherramienta de línea de comandos.To set docker-custom-image-name, use the az command-line tool.

¿Se puede exponer más de un puerto en mi imagen de contenedor personalizado?Can I expose more than one port on my custom container image?

No se admite la exposición de más de un puerto.We don't support exposing more than one port.

¿Puedo traer mi propio almacenamiento?Can I bring my own storage?

Sí, la prestación traiga su propio almacenamiento está en versión preliminar.Yes, bring your own storage is in preview.

¿Por qué no puedo examinar el sistema de archivos de mi contenedor personalizado o ejecutar procesos desde el sitio de SCM?Why can't I browse my custom container's file system or running processes from the SCM site?

El sitio de SCM se ejecuta en un contenedor independiente.The SCM site runs in a separate container. no puede comprobar el sistema de archivos o los procesos en ejecución del contenedor de la aplicación.You can't check the file system or running processes of the app container.

Mi contenedor personalizado escucha en un puerto distinto al puerto 80. ¿Cómo puedo configurar mi aplicación para enrutar las solicitudes hacia ese puerto?My custom container listens to a port other than port 80. How can I configure my app to route requests to that port?

Disponemos de detección automática de puerto.We have automatic port detection. También puede especificar un valor de la aplicación llamado WEBSITES_PORT y asignarle el valor del número de puerto esperado.You can also specify an app setting called WEBSITES_PORT and give it the value of the expected port number. Anteriormente, la plataforma utilizaba el valor de aplicación PORT.Previously, the platform used the PORT app setting. Tenemos previsto para dejar de utilizar este valor de la aplicación y usar WEBSITES_PORT exclusivamente.We are planning to deprecate this app setting and to use WEBSITES_PORT exclusively.

¿Es necesario implementar HTTPS en mi contenedor personalizado?Do I need to implement HTTPS in my custom container?

No, la plataforma controla la terminación HTTPS en los front-end compartidos.No, the platform handles HTTPS termination at the shared front ends.

Varios contenedores con Docker ComposeMulti-container with Docker Compose

¿Cómo puedo configurar Azure Container Registry (ACR) para usar con varios contenedores?How do I configure Azure Container Registry (ACR) to use with multi-container?

Para poder usar ACR con varios contenedores, todas las imágenes de contenedor deben estar hospedadas en el mismo servidor de registro ACR.In order to use ACR with multi-container, all container images need to be hosted on the same ACR registry server. Una vez que estén en el mismo servidor de registro, tendrá que crear la configuración de la aplicación y, después, actualizar el archivo de configuración de Docker Compose para incluir el nombre de imagen de ACR.Once they are on the same registry server, you will need to create application settings and then update the Docker Compose configuration file to include the ACR image name.

Cree la siguiente configuración de la aplicación:Create the following application settings:

  • DOCKER_REGISTRY_SERVER_USERNAMEDOCKER_REGISTRY_SERVER_USERNAME
  • DOCKER_REGISTRY_SERVER_URL (dirección URL completa, por ejemplo: https://<server-name>.azurecr.io)DOCKER_REGISTRY_SERVER_URL (full URL, ex: https://<server-name>.azurecr.io)
  • DOCKER_REGISTRY_SERVER_PASSWORD (habilitar el acceso de administrador en la configuración de ACR)DOCKER_REGISTRY_SERVER_PASSWORD (enable admin access in ACR settings)

En el archivo de configuración, haga referencia a la imagen ACR similar al ejemplo siguiente:Within the configuration file, reference your ACR image like the following example:

image: <server-name>.azurecr.io/<image-name>:<tag>

¿Cómo puedo saber qué contenedor es accesible desde Internet?How do I know which container is internet accessible?

  • Solo un contenedor puede estar abierto para el accesoOnly one container can be open for access
  • Solo el puerto 80 y 8080 es accesible (puertos expuestos)Only port 80 and 8080 is accessible (exposed ports)

Estas son las reglas para determinar qué contenedor es accesible, en el orden de prioridad:Here are the rules for determining which container is accessible - in the order of precedence:

  • Configuración de la aplicación WEBSITES_WEB_CONTAINER_NAME establecida en el nombre del contenedorApplication setting WEBSITES_WEB_CONTAINER_NAME set to the container name
  • El primer contenedor para definir el puerto 80 u 8080The first container to define port 80 or 8080
  • Si ninguna de las opciones anteriores es true, el primer contenedor definido en el archivo será accesible (expuesto)If neither of the above is true, the first container defined in the file will be accessible (exposed)

Precios y contrato de nivel de servicioPricing and SLA

¿Cuál es el precio ahora que el servicio está disponible con carácter general?What is the pricing, now that the service is generally available?

Se le cobrará el número de horas que se ejecute la aplicación, con los precios normales de Azure App Service.You are charged the normal Azure App Service pricing for the number of hours that your app runs.

Otras preguntasOther questions

¿Cuáles son los caracteres admitidos en los nombres de configuración de la aplicación?What are the supported characters in application settings names?

Puede usar solo letras (A-Z, a-z), números (0-9) y el carácter de subrayado () para la configuración de la aplicación.You can use only letters (A-Z, a-z), numbers (0-9), and the underscore character () for application settings.

¿Dónde puedo solicitar nuevas características?Where can I request new features?

Puede enviar su idea en el foro de comentarios de Web Apps.You can submit your idea at the Web Apps feedback forum. Agregue [Linux] en el título de la idea.Add "[Linux]" to the title of your idea.

Pasos siguientesNext steps