Implementar uma aplicação do Spring Boot no Linux no Serviço de Aplicações do Azure

Este tutorial explica como utilizar o Docker para colocar a aplicação do Spring Boot num contentor e implementar a sua própria imagem de docker num anfitrião Linux no Serviço de Aplicações do Azure.

Pré-requisitos

Para concluir os passos apresentados neste tutorial, são necessários os seguintes pré-requisitos:

Nota

Devido aos requisitos de virtualização deste tutorial, não é possível seguir os passos apresentados neste artigo numa máquina virtual. Tem de utilizar um computador físico com as funcionalidades de virtualização ativadas.

Criar a aplicação Web "Spring Boot on Docker Getting Started" (Introdução ao Spring Boot no Docker)

Em seguida, são explicados os passos necessários para criar uma aplicação Web do Spring Boot simples e testá-la localmente.

  1. Abra uma linha de comandos, crie um diretório local para incluir nele a sua aplicação e mude para esse diretório. Por exemplo:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Clone o projeto de exemplo Spring Boot on Docker Getting Started (Introdução ao Spring Boot no Docker) para o diretório que criou. Por exemplo:

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

    cd gs-spring-boot-docker/complete
    
  4. Crie o ficheiro JAR com recurso ao Maven. Por exemplo:

    mvn package
    
  5. Uma vez criada a aplicação Web, altere o diretório para o diretório target, onde o ficheiro JAR está localizado, e inicie a aplicação Web. Por exemplo:

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. Teste a aplicação Web ao navegar localmente para a mesma com um browser. Por exemplo, se tiver o comando curl disponível e tiver configurado o servidor Tomcat para funcionar na porta 80:

    curl http://localhost
    
  7. Você verá a seguinte mensagem exibida: Hello Docker World

    Browse Sample App Locally

Criar um registo do Azure Container Registry e utilizá-lo como um Registo Privado do Docker

Os passos seguintes explicam como utilizar o portal do Azure para criar um registo do Azure Container Registry.

Nota

Se quiser utilizar a CLI do Azure em vez do portal, siga os passos em Criar um registo de contentor privado do Docker com a CLI 2.0 do Azure.

  1. Aceda ao portal do Azure e inicie sessão.

    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 para Novo, selecione Contêineres e selecione Registro de Contêiner do Azure.

    Create a new Azure Container Registry

  3. Quando for apresentada a página Criar registo de contentor, introduza o Nome do registo, a Subscrição, o Grupo de recursos e a Localização. Depois, selecione Criar.

    Configure Azure Container Registry settings

  4. Selecione Teclas de acesso em Configurações e ative a opção Ativado atrás do usuário Admin.

    Enable admin user UI in the Azure portal

Configurar o Maven para criar uma imagem no seu Registro de Contêiner do Azure

  1. Navegue até o diretório de projeto concluído para 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 ficheiro pom.xml com a versão mais recente do jib-maven-plugin e o valor do servidor de início de sessão, e aceda às definições do Azure Container Registry da secçã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 o jib-maven-plugin à coleção <plugins> no ficheiro pom.xml. Este exemplo usa a versão 3.2.0.

    Especifique a imagem de base em <from>/<image>, neste caso mcr.microsoft.com/openjdk/jdk:11-ubuntu. Especifique o nome da imagem final a criar a partir da base em <to>/<image>.

    A autenticação {docker.image.prefix} é o Servidor de início de sessão na página de registo anteriormente apresentada. O {project.artifactId} é o nome e o número da versão do ficheiro JAR da primeira compilação 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 para o diretório de projeto concluído da sua aplicação Spring Boot, execute o seguinte comando para recriar a aplicação e emita o contentor para o seu registo do Azure Container Registry:

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

Nota

  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 uma aplicação Web no Linux no Serviço de Aplicações do Azure ao utilizar a sua imagem de contentor

  1. Aceda ao portal do Azure e inicie sessão.

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

    Create a new web app in the Azure portal

  3. Quando for apresentada a Aplicação Web no Linux, introduza as seguintes informações:

    • Selecione a sua Subscrição na lista pendente.

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

    • Introduza um nome exclusivo para o Nome da aplicação. Por exemplo: "wingtiptoyslinux"

    • Especifique Docker Container para Publicar.

    • Selecione Linux como o Sistema Operativo.

    • Selecione Região.

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

    • Clique em Avançar: Docker.

    Click the Next: Docker button to proceed.

    Na página Aplicação Web, selecione Docker e introduza as seguintes informações:

    • Selecione Contentor Único.

    • Registro: Escolha seu contêiner, 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 Rever + criar.

Reveja as informações e selecione Criar.

Quando a implementação for concluída, selecione Ir para recurso. A página de implementação apresenta o URL para aceder à aplicação.

Get URL of deployment

Nota

O Azure irá mapear automaticamente os pedidos de Internet para o servidor Tomcat incorporado em execução na porta 80. No entanto, se tiver configurado o seu servidor Tomcat incorporado para funcionar na porta 8080 ou numa porta personalizada, terá de adicionar uma variável de ambiente à aplicação Web que define a porta do servidor Tomcat incorporado. Para fazê-lo, siga os seguintes passos:

  1. Aceda ao portal do Azure e inicie sessão.

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

  3. Selecione Configuração no painel de navegação esquerdo.

  4. Na secção Definições da aplicação, adicione uma nova definição chamada WEBSITES_PORT e introduza o número de porta personalizada para o valor.

  5. Selecione OK. Em seguida, selecione Guardar.

Saving a custom port number in the Azure portal

Clean up resources (Limpar recursos)

Utilize o portal do Azure para eliminar os recursos criados neste artigo que deixaram de ser necessários para evitar custos inesperados.

Próximos passos

Para saber mais sobre o Spring e o Azure, avance para o centro de documentação relativa ao Spring no Azure.

Consulte também

Para obter mais informações sobre como utilizar as aplicações Spring Boot no Azure, veja os artigos seguintes:

Para obter mais informações sobre a utilização do Azure com Java, veja Azure para Programadores de Java e Working with Azure DevOps and Java (Trabalhar com o Azure DevOps e Java).

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

Para obter ajuda para começar a criar as suas próprias aplicações do Spring Boot, veja o Spring Initializr em https://start.spring.io/.

Para obter mais informações para começar a criar uma aplicação Spring Boot simples, veja o Spring Initializr em https://start.spring.io/.

Para obter mais exemplos sobre como utilizar imagens personalizadas do Docker com o Azure, veja Utilizar uma imagem personalizada do Docker para as Aplicações Web do Azure no Linux.