FAQ do Serviço de Aplicações do Azure no LinuxAzure App Service on Linux FAQ

Com o lançamento do App Service no Linux, estamos a trabalhar na adição de funcionalidades e na melhoria da nossa plataforma.With the release of App Service on Linux, we're working on adding features and making improvements to our platform. Este artigo fornece respostas a perguntas que os nossos clientes nos têm feito recentemente.This article provides answers to questions that our customers have been asking us recently.

Se tiver alguma pergunta, comente este artigo.If you have a question, comment on this article.

Imagens embuthamBuilt-in images

Quero forrear os contentores estivadores embutidos que a plataforma fornece. Onde posso encontrar os ficheiros?I want to fork the built-in Docker containers that the platform provides. Where can I find those files?

Podes encontrar todos os ficheiros do Docker no GitHub.You can find all Docker files on GitHub. Você pode encontrar todos os contentores Docker em Docker Hub.You can find all Docker containers on Docker Hub.

Quais são os valores esperados para a secção de Ficheiros de Arranque quando configurar a pilha de tempo de execução?What are the expected values for the Startup File section when I configure the runtime stack?

PilhaStack Valor EsperadoExpected Value
Java SEJava SE o comando para iniciar a sua aplicação JAR (por exemplo, java -jar /home/site/wwwroot/app.jar --server.port=80 )the command to start your JAR app (for example, java -jar /home/site/wwwroot/app.jar --server.port=80)
TomcatTomcat a localização de um script para executar as configurações necessárias (por exemplo, /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 o ficheiro de configuração PM2 ou o seu ficheiro de scriptthe PM2 configuration file or your script file
.NET Core.NET Core o nome DLL compilado comodotnet <myapp>.dllthe compiled DLL name as dotnet <myapp>.dll
RubyRuby o script Ruby que você quer inicializar a sua app comthe Ruby script that you want to initialize your app with

Estes comandos ou scripts são executados após o início do recipiente docker incorporado, mas antes do seu código de aplicação ser iniciado.These commands or scripts are executed after the built-in Docker container is started, but before your application code is started.

GestãoManagement

O que acontece quando carrego no botão de reinício no portal Azure?What happens when I press the restart button in the Azure portal?

Esta ação é a mesma que um recomeço do Docker.This action is the same as a Docker restart.

Posso utilizar o Secure Shell (SSH) para ligar à máquina virtual do contentor de aplicações (VM)?Can I use Secure Shell (SSH) to connect to the app container virtual machine (VM)?

Sim, pode fazê-lo através do site de gestão de controlo de fontes (SCM).Yes, you can do that through the source control management (SCM) site.

Nota

Também pode ligar ao contentor de aplicações diretamente a partir do seu computador de desenvolvimento local através de SSH, SFTP ou do Visual Studio Code (para aplicações Node.js de depuração em direto).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 obter mais informações, veja Depuração remota e SSH no Serviço de Aplicações no Linux.For more information, see Remote debugging and SSH in App Service on Linux.

Como posso criar um plano de Serviço de Aplicações Linux através de um SDK ou um modelo de Gestor de Recursos Azure?How can I create a Linux App Service plan through an SDK or an Azure Resource Manager template?

Desaprote o campo reservado do serviço de aplicações para o verdadeiro.Set the reserved field of the app service to true.

Integração e implementação contínuaContinuous integration and deployment

A minha aplicação web ainda usa uma imagem antiga do estivador depois de ter atualizado a imagem no Docker Hub. Apoia a integração contínua e a implantação de recipientes 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?

Sim, para configurar a integração/implantação contínua para o Registo de Contentores Azure ou DockerHub, seguindo a implementação contínua com a Web App para contentores.Yes, to set up continuous integration/deployment for Azure Container Registry or DockerHub, by following Continuous Deployment with Web App for Containers. Para registos privados, pode refrescar o recipiente parando e iniciando a sua aplicação web.For private registries, you can refresh the container by stopping and then starting your web app. Ou pode alterar ou adicionar uma definição de aplicação falsa para forçar uma atualização do seu recipiente.Or you can change or add a dummy application setting to force a refresh of your container.

Apoia ambientes de encenação?Do you support staging environments?

Sim.Yes.

Posso usar webDeploy/MSDeploy para implementar a minha aplicação web?Can I use WebDeploy/MSDeploy to deploy my web app?

Sim, precisa de definir uma definição de aplicação chamada WEBSITE_WEBDEPLOY_USE_SCM falsa.Yes, you need to set an app setting called WEBSITE_WEBDEPLOY_USE_SCM to false.

A implementação da aplicação do Git falha ao usar a aplicação web Linux. Como posso contornar o assunto?Git deployment of my application fails when using Linux web app. How can I work around the issue?

Se a implementação do Git falhar na sua aplicação web Linux, escolha uma das seguintes opções para implementar o seu código de aplicação:If Git deployment fails to your Linux web app, choose one of the following options to deploy your application code:

  • Utilize a função de Entrega Contínua (Pré-visualização): Pode armazenar o código fonte da sua aplicação num repo Azure DevOps Git ou GitHub para utilizar a Azure Continuous Delivery.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 obter mais informações, consulte Como configurar a entrega contínua para a aplicação web Linux.For more information, see How to configure Continuous Delivery for Linux web app.

  • Utilize a API de implementação ZIP: Para utilizar esta API, SSH na sua aplicação web e vá para a pasta onde pretende implementar o seu 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. Executar o seguinte código:Run the following code:

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

    Se tiver um erro no qual o curl comando não seja encontrado, certifique-se de que instala o curl utilizando apt-get install curl antes de executar o 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.

Suporte de idiomasLanguage support

Quero usar tomadas web na minha aplicação Node.js, configurações especiais ou configurações para definir?I want to use web sockets in my Node.js application, any special settings, or configurations to set?

Sim, desative perMessageDeflate o código de Node.js do lado do servidor.Yes, disable perMessageDeflate in your server-side Node.js code. Por exemplo, se estiver a utilizar socket.io, utilize o seguinte código:For example, if you are using socket.io, use the following code:

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

Suporta aplicações não-compensadas .NET Core?Do you support uncompiled .NET Core apps?

Sim.Yes.

Apoia o Compositor como gestor de dependência para aplicações PHP?Do you support Composer as a dependency manager for PHP apps?

Sim, durante uma implementação de Git, Kudu deve detetar que você está implementando uma aplicação PHP (graças à presença de um ficheiro compositor.lock), e Kudu irá então desencadear uma instalação de 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.

Personalizar contentoresCustom containers

Estou a usar o meu próprio contentor personalizado. Quero que a plataforma monte uma participação da SMB no /home/ diretório.I'm using my own custom container. I want the platform to mount an SMB share to the /home/ directory.

Se WEBSITES_ENABLE_APP_SERVICE_STORAGE a definição não for especificada ou definida como verdadeira, o /home/ diretório será partilhado em instâncias de escala e os ficheiros escritos persistirão através de reinicialização.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. A definição explícita WEBSITES_ENABLE_APP_SERVICE_STORAGE para falso irá desativar o suporte.Explicitly setting WEBSITES_ENABLE_APP_SERVICE_STORAGE to false will disable the mount.

O meu contentor personalizado demora muito tempo a começar, e a plataforma reinicia o contentor antes de terminar o arranque.My custom container takes a long time to start, and the platform restarts the container before it finishes starting up.

Pode configurar o tempo que a plataforma espera antes de reiniciar o seu recipiente.You can configure the amount of time the platform will wait before it restarts your container. Para tal, defina a definição da WEBSITES_CONTAINER_START_TIME_LIMIT aplicação para o valor que pretende.To do so, set the WEBSITES_CONTAINER_START_TIME_LIMIT app setting to the value you want. O valor predefinido é de 230 segundos e o valor máximo é de 1800 segundos.The default value is 230 seconds, and the maximum value is 1800 seconds.

Qual é o formato para o URL do servidor de registo privado?What is the format for the private registry server URL?

Forneça o URL de registo completo, incluindo http:// ou https:// .Provide the full registry URL, including http:// or https://.

Qual é o formato do nome de imagem na opção de registo privado?What is the format for the image name in the private registry option?

Adicione o nome de imagem completo, incluindo o URL de registo privado (por exemplo, myacr.azurecr.io/dotnet:latest).Add the full image name, including the private registry URL (for example, myacr.azurecr.io/dotnet:latest). Os nomes de imagem que utilizam uma porta personalizada não podem ser introduzidos através do portal.Image names that use a custom port cannot be entered through the portal. Para docker-custom-image-name definir, utilize a az ferramenta de linha de comando.To set docker-custom-image-name, use the az command-line tool.

Posso expor mais do que uma porta na minha imagem personalizada do contentor?Can I expose more than one port on my custom container image?

Não apoiamos expor mais do que um porto.We don't support exposing more than one port.

Posso levar o meu próprio armazém?Can I bring my own storage?

Sim, traga o seu próprio armazenamento está em pré-visualização.Yes, bring your own storage is in preview.

Por que não posso navegar no sistema de ficheiros do meu contentor personalizado ou processar a partir do site SCM?Why can't I browse my custom container's file system or running processes from the SCM site?

O sítio SCM funciona num recipiente separado.The SCM site runs in a separate container. Não é possível verificar o sistema de ficheiros ou executar processos do recipiente da aplicação.You can't check the file system or running processes of the app container.

O meu contentor personalizado ouve um porto que não seja o porto 80. Como posso configurar a minha app para encaminhar pedidos para aquele porto?My custom container listens to a port other than port 80. How can I configure my app to route requests to that port?

Temos deteção automática da porta.We have automatic port detection. Também pode especificar uma configuração de aplicação chamada WEBSITES_PORT e dar-lhe o valor do número de porta esperado.You can also specify an app setting called WEBSITES_PORT and give it the value of the expected port number. Anteriormente, a plataforma utilizava a definição da aplicação PORT.Previously, the platform used the PORT app setting. Estamos a planear depreciar esta configuração da aplicação e usáWEBSITES_PORT exclusivamente.We are planning to deprecate this app setting and to use WEBSITES_PORT exclusively.

Preciso implementar HTTPS no meu recipiente personalizado?Do I need to implement HTTPS in my custom container?

Não, a plataforma lida com a rescisão HTTPS nas extremidades dianteiras partilhadas.No, the platform handles HTTPS termination at the shared front ends.

Multi-contentor com Docker ComposeMulti-container with Docker Compose

Como configurar o Registo de Contentores Azure (ACR) para utilizar com vários contentores?How do I configure Azure Container Registry (ACR) to use with multi-container?

Para utilizar o ACR com multi-contentores, todas as imagens do contentor devem ser acolhidas no mesmo servidor de registo ACR.In order to use ACR with multi-container, all container images need to be hosted on the same ACR registry server. Uma vez que estejam no mesmo servidor de registo, terá de criar definições de aplicação e, em seguida, atualizar o ficheiro de configuração Do Docker Compose para incluir o nome de imagem 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.

Criar as seguintes definições de aplicação:Create the following application settings:

  • DOCKER_REGISTRY_SERVER_USERNAMEDOCKER_REGISTRY_SERVER_USERNAME
  • DOCKER_REGISTRY_SERVER_URL (URL completo, ex: https://<server-name>.azurecr.io )DOCKER_REGISTRY_SERVER_URL (full URL, ex: https://<server-name>.azurecr.io)
  • DOCKER_REGISTRY_SERVER_PASSWORD (permitir o acesso a administrador nas definições de ACR)DOCKER_REGISTRY_SERVER_PASSWORD (enable admin access in ACR settings)

Dentro do ficheiro de configuração, faça referência à sua imagem ACR como o seguinte exemplo:Within the configuration file, reference your ACR image like the following example:

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

Como sei qual é o recipiente acessível à Internet?How do I know which container is internet accessible?

  • Apenas um recipiente pode estar aberto para acessoOnly one container can be open for access
  • Apenas a porta 80 e 8080 está acessível (portas expostas)Only port 80 and 8080 is accessible (exposed ports)

Aqui estão as regras para determinar qual o recipiente acessível - por ordem de precedência:Here are the rules for determining which container is accessible - in the order of precedence:

  • Definição de aplicação WEBSITES_WEB_CONTAINER_NAME definida para o nome do recipienteApplication setting WEBSITES_WEB_CONTAINER_NAME set to the container name
  • O primeiro recipiente a definir a porta 80 ou 8080The first container to define port 80 or 8080
  • Se nenhum dos acima referidos for verdadeiro, o primeiro recipiente definido no ficheiro será acessível (exposto)If neither of the above is true, the first container defined in the file will be accessible (exposed)

Tomadas WebWeb Sockets

As tomadas web são suportadas em aplicações Linux.Web Sockets are supported on Linux apps.

Importante

As tomadas web não são suportadas atualmente para aplicações Linux em Planos de Serviço de Aplicações Gratuitas.Web Sockets are not currently supported for Linux apps on Free App Service Plans. Estamos a trabalhar na remoção desta limitação e planeamos suportar até 5 ligações web socket em planos de Serviço de Aplicações Gratuitas.We are working on removing this limitation and plan to support up to 5 web socket connections on Free App Service plans.

Preços e SLAPricing and SLA

Qual é o preço, agora que o serviço está geralmente disponível?What is the pricing, now that the service is generally available?

Os preços variam de acordo com a SKU e a região, mas pode ver mais detalhes na nossa página de preços: Preço do Serviço de Aplicações.Pricing varies by SKU and region but you can see more details at our pricing page: App Service Pricing.

Outras questõesOther questions

O que significa "Recurso solicitado não disponível no grupo de recursos"?What does "Requested feature is not available in resource group" mean?

Pode ver esta mensagem ao criar uma aplicação web utilizando o Azure Resource Manager (ARM).You may see this message when creating web app using Azure Resource Manager (ARM). Com base numa limitação atual, para o mesmo grupo de recursos, não é possível misturar aplicações Windows e Linux na mesma região.Based on a current limitation, for the same resource group, you cannot mix Windows and Linux apps in the same region.

Quais são os caracteres suportados nos nomes de definições de aplicações?What are the supported characters in application settings names?

Pode utilizar apenas letras (A-Z, a-z), números (0-9) e o caráter de sublinhado () para configurações de aplicações.You can use only letters (A-Z, a-z), numbers (0-9), and the underscore character () for application settings.

Onde posso pedir novas funcionalidades?Where can I request new features?

Pode submeter a sua ideia no fórum de feedback das Web Apps.You can submit your idea at the Web Apps feedback forum. Adicione "[Linux]" ao título da sua ideia.Add "[Linux]" to the title of your idea.

Passos seguintesNext steps