Implantar um aplicativo do Spring Boot no Serviço de Aplicativo do Azure no Linux

Este tutorial descreve como usar o Docker para colocar seu aplicativo Spring Boot em um contêiner e implantar sua própria imagem do Docker em um host Linux no Serviço de Aplicativo do Azure.

Pré-requisitos

Para concluir as etapas deste tutorial, você precisa ter os seguintes pré-requisitos:

Observação

Devido aos requisitos de virtualização deste tutorial, você não pode seguir as etapas neste artigo em uma máquina virtual. Você deve usar um computador físico com recursos de virtualização habilitados.

Criar o aplicativo Web de Introdução ao Spring Boot no Docker

As etapas a seguir descrevem as etapas necessárias para criar um aplicativo Web Spring Boot simples e testá-lo localmente.

  1. Abra um prompt de comando, crie um diretório local para conter o aplicativo e altere para o diretório. Por exemplo:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Clone o exemplo de projeto Introdução ao Spring Boot no Docker para o diretório criado. Por exemplo:

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Altere o diretório para o projeto concluído. Por exemplo:

    cd gs-spring-boot-docker/complete
    
  4. Crie o arquivo JAR usando o Maven. Por exemplo:

    mvn package
    
  5. Quando o aplicativo Web tiver sido criado, altere o diretório para o diretório target em que o arquivo JAR está localizado e inicie o aplicativo Web. Por exemplo:

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. Teste o aplicativo Web navegando até ele localmente usando um navegador da Web. Por exemplo, se você tiver ondulação disponível e tiver configurado o servidor Tomcat para ser executado na porta 80:

    curl http://localhost
    
  7. Você verá a seguinte mensagem exibida: Olá, mundo do Docker

    Browse Sample App Locally

Criar um Registro de Contêiner do Azure para usar como um Registro do Docker Privado

As etapas a seguir descrevem como usar o portal do Azure para criar um Registro de Contêiner do Azure.

Observação

Se você quiser usar a CLI do Azure, em vez do Portal do Azure, siga as etapas em Criar um registro de contêiner do Docker privado usando a CLI do Azure 2.0.

  1. Navegue até o portal do Azure e conecte-se.

    Depois de entrar em sua conta no portal do Azure, siga as etapas no artigo Criar um registro de contêiner privado do Docker usando o portal do Azure , que são parafraseadas nas etapas a seguir por uma questão de conveniência.

  2. Clique no ícone de menu de Novo, selecione Contêineres e escolha Registro de Contêiner do Azure.

    Create a new Azure Container Registry

  3. Quando a página Criar registro de contêiner for exibida, insira o Nome do registro, a Assinatura, o Grupo de recursos e a Localização. Em seguida, selecione Criar.

    Configure Azure Container Registry settings

  4. Selecione Chaves de acesso em Configurações e ative a opção Habilitado atrás do Usuário administrador.

    Enable admin user UI in the Azure portal

Configurar o Maven a fim de criar uma imagem para o Registro de Contêiner do Azure

  1. Navegue até o diretório do projeto completo de seu aplicativo Spring Boot (por exemplo, "C:\SpringBoot\gs-spring-boot-docker\complete" ou "/users/robert/SpringBoot/gs-spring-boot-docker/complete") e abra o arquivo pom.xml com um editor de texto.

  2. Atualize a coleção <properties> no arquivo pom.xml com a versão mais recente do jib-maven-plugin, o valor do servidor de logon e as configurações de acesso para o Registro de Contêiner do Azure da seção anterior deste tutorial. Por exemplo:

    <properties>
       <jib-maven-plugin.version>3.2.0</jib-maven-plugin.version>
       <docker.image.prefix>wingtiptoysregistry.azurecr.io</docker.image.prefix>
       <java.version>1.8</java.version>
    </properties>
    
  3. Adicione jib-maven-plugin à coleção <plugins> no arquivo pom.xml. Este exemplo usa a versão 3.2.0.

    Especifique a imagem base em <from>/<image>, aqui mcr.microsoft.com/openjdk/jdk:11-ubuntu. Especifique o nome da imagem final a ser criada da base em <to>/<image>.

    A autenticação {docker.image.prefix} é o Servidor de logon na página de registro mostrada anteriormente. O {project.artifactId} é o nome e o número de versão do arquivo JAR do primeiro build do Maven do projeto.

    <plugin>
      <artifactId>jib-maven-plugin</artifactId>
      <groupId>com.google.cloud.tools</groupId>
      <version>${jib-maven-plugin.version}</version>
      <configuration>
         <from>
             <image>mcr.microsoft.com/openjdk/jdk:11-ubuntu</image>
         </from>
         <to>
             <image>${docker.image.prefix}/${project.artifactId}</image>
         </to>
      </configuration>
    </plugin>
    
  4. Navegue até o diretório de projeto completo para o seu aplicativo Spring Boot e execute o seguinte comando para recompilar o aplicativo e fazer o push do contêiner ao Registro de Contêiner do Azure:

    az acr login --name wingtiptoysregistry && mvn compile jib:build
    

Observação

  1. O comando az acr login ... tentará fazer logon no Registro de Contêiner do Azure, caso contrário, você precisará fornecer <username> e <password> para jib-maven-plugin, consulte Métodos de autenticação no jib.
  2. Quando você estiver usando o Jib para enviar sua imagem para o Registro de Contêiner do Azure, a imagem não usará o Dockerfile, consulte este documento para obter detalhes.

Criar um aplicativo Web no Linux no Serviço de Aplicativo do Azure usando a imagem de contêiner

  1. Navegue até o portal do Azure e conecte-se.

  2. Clique no ícone de menu de Criar um recurso, selecione Computação e escolha Aplicativo Web.

    Create a new web app in the Azure portal

  3. Quando a página Aplicativo Web no Linux for exibida, insira as seguintes informações:

    • Escolha uma Assinatura na lista suspensa.

    • Escolha um Grupo de Recursos existente ou especifique um nome para criar um novo grupo de recursos.

    • Insira um nome exclusivo para o Nome do aplicativo, por exemplo: "wingtiptoyslinux"

    • Especifique Docker Container para Publicar.

    • Escolha o Linux como o Sistema Operacional.

    • Selecione Região.

    • Aceite o Plano do Linux e escolha um Plano do Serviço de Aplicativo existente ou selecione Criar para criar um Plano do Serviço de Aplicativo.

    • Clique em Avançar: Docker.

    Click the Next: Docker button to proceed.

    Na página Aplicativo Web, selecione Docker e insira as seguintes informações:

    • Selecione Contêiner Único.

    • Registro: Escolha seu recipiente, por exemplo: "wingtiptoysregistry"

    • Imagem: selecione a imagem criada anteriormente, por exemplo: "spring-boot-docker"

    • Tag: Escolha a tag para a imagem, por exemplo: "mais recente"

    • Comando de inicialização: Mantenha-o em branco, pois a imagem já tem o comando start up

    Depois de inserir todas as informações acima, selecione Revisar + criar.

    Finish by selecting Review + Create.

    • Selecione Examinar + criar.

Examine as informações e selecione Criar.

Depois que a implantação estiver concluída, selecione Ir para o recurso. A página de implantação exibirá a URL para acessar o aplicativo.

Get URL of deployment

Observação

O Azure mapeará automaticamente as solicitações de Internet para o servidor Tomcat inserido que está em execução na porta -80. No entanto, se você tiver configurado seu servidor Tomcat inserido para ser executado na porta -8080 ou na porta personalizada, precisará adicionar uma variável de ambiente ao seu aplicativo Web que defina a porta do servidor Tomcat inserido. Para fazer isso, execute as seguintes etapas:

  1. Navegue até o portal do Azure e conecte-se.

  2. Selecione o ícone de Aplicativos Web e escolha seu aplicativo na página Serviços de Aplicativos.

  3. Selecione Configuração no painel de navegação à esquerda.

  4. Na seção Configurações de aplicativo, adicione uma nova configuração chamada WEBSITES_PORT e insira o número da porta personalizada para o valor.

  5. Selecione OK. Em seguida, selecione Salvar.

Saving a custom port number in the Azure portal

Limpar os recursos

Quando não for mais necessário, use o portal do Azure para excluir os recursos criados neste artigo para evitar cobranças inesperadas.

Próximas etapas

Para saber mais sobre o Spring e o Azure, continue no Spring no Centro de Documentação do Azure.

Confira também

Para obter mais informações sobre como usar aplicativos Spring Boot no Azure, confira os seguintes artigos:

Para obter mais informações sobre como usar o Azure com Java, confira Azure para Desenvolvedores Java e Como trabalhar com o Java e o Azure DevOps.

Para obter mais detalhes sobre o Spring Boot no projeto de exemplo do Docker, consulte Introdução ao Spring Boot no Docker.

Para obter ajuda na introdução a seus próprios aplicativos Spring Boot, confira Spring Initializr em https://start.spring.io/.

Para obter mais informações de introdução sobre como criar um aplicativo Spring Boot simples, consulte o Spring Initializr em https://start.spring.io/.

Para obter mais exemplos sobre como usar imagens personalizadas do Docker com o Azure, veja Usando uma imagem personalizada do Docker para o Aplicativo Web do Azure no Linux.