Distribuire un'applicazione Spring Boot in Linux nel Servizio app di Azure

Questa esercitazione illustra l'uso di Docker per distribuire l'applicazione Spring Boot in contenitori e distribuire l'immagine Docker in un host Linux nel servizio app di Azure.

Prerequisiti

Per completare la procedura di questa esercitazione, sono necessari i prerequisiti seguenti:

Nota

A causa dei requisiti di virtualizzazione di questa esercitazione, non è possibile seguire la procedura illustrata in questo articolo in una macchina virtuale. È necessario usare un computer fisico in cui sono abilitate le funzionalità di virtualizzazione.

Creare l'app Web introduttiva di Spring Boot in Docker

I passaggi seguenti illustrano i passaggi necessari per creare una semplice applicazione Web Spring Boot e testarla localmente.

  1. Aprire un prompt dei comandi e creare una directory locale in cui contenere l'applicazione, quindi passare a tale directory. Ad esempio:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Clonare il progetto di esempio Spring Boot on Docker Getting Started (Introduzione a Spring Boot in Docker) nella directory appena creata, ad esempio:

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Passare alla directory del progetto completato. Ad esempio:

    cd gs-spring-boot-docker/complete
    
  4. Compilare il file JAR usando Maven. Ad esempio:

    mvn package
    
  5. Dopo aver creato l'app Web, passare alla directory target in cui si trova il file JAR e avviare l'app Web. Ad esempio:

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. Testare l'app Web esplorandola localmente tramite un Web browser. Ad esempio, se è disponibile un cURL e il server Tomcat è configurato per l'esecuzione sulla porta 80:

    curl http://localhost
    
  7. Dovrebbe essere visualizzato il messaggio seguente: Hello Docker World

    Browse Sample App Locally

Creare un'istanza di Registro Azure Container da usare come registro Docker privato

La procedura seguente illustra come usare il portale di Azure per creare un'istanza di Registro Azure Container.

Nota

Per usare l'interfaccia della riga di comando di Azure invece del portale di Azure, seguire i passaggi in Creare un registro contenitori Docker privato usando l'interfaccia della riga di comando di Azure 2.0.

  1. Aprire il portale di Azure ed effettuare l'accesso.

    Dopo aver eseguito l'accesso all'account nel portale di Azure, seguire la procedura descritta nell'articolo Creare un registro contenitori Docker privato usando l'articolo portale di Azure, parafrasato nei passaggi seguenti per motivi di esperienza.

  2. Fare clic sull'icona di menu Nuovo, selezionare Contenitori e quindi Registro Azure Container.

    Create a new Azure Container Registry

  3. Quando viene visualizzata la pagina Crea registro contenitori, immettere Nome del registro, Sottoscrizione, Gruppo di risorse e Percorso. Selezionare Crea.

    Configure Azure Container Registry settings

  4. Selezionare Chiavi di accesso in Impostazioni e attivare l'opzione Abilitato dietro l'utente Amministrazione.

    Enable admin user UI in the Azure portal

Configurare Maven per la creazione di immagini in Registro Azure Container

  1. Passare alla directory del progetto completato per l'applicazione Spring Boot (ad esempio, "C:\SpringBoot\gs-spring-boot-docker\complete" o "/users/robert/SpringBoot/gs-spring-boot-docker/complete") e aprire il file pom.xml con un editor di testo.

  2. Aggiornare la raccolta <properties> nel file pom.xml con l'ultima versione di jib-maven-plugin, oltre che con il valore del server di accesso e le impostazioni di accesso per Registro Azure Container della sezione precedente di questa esercitazione. Ad esempio:

    <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. Aggiungere jib-maven-plugin alla raccolta <plugins> nel file pom.xml. Questo esempio usa la versione 3.2.0.

    Specificare l'immagine di base in <from>/<image>, qui mcr.microsoft.com/openjdk/jdk:11-ubuntu. Specificare il nome dell'immagine finale da creare dalla base in <to>/<image>.

    Il valore {docker.image.prefix} dell'autenticazione è il Server di accesso nella pagina del registro visualizzata in precedenza. Il valore {project.artifactId} indica il nome e il numero di versione del file JAR dalla prima compilazione Maven del progetto.

    <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. Passare alla directory del progetto completato per l'applicazione Spring Boot ed eseguire il comando seguente per ricompilare l'applicazione ed effettuare il push del contenitore in Registro Azure Container:

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

Nota

  1. Il comando az acr login ... tenterà di accedere a Registro Azure Container; in caso contrario, è necessario fornire <username> e <password> per jib-maven-plugin, vedere Metodi di autenticazione in jib.
  2. Quando si usa Jib per eseguire il push dell'immagine nel Registro Azure Container, l'immagine non userà il Dockerfile. Per informazioni dettagliate, vedere questo documento.

Creare un'app Web in Linux nel servizio app di Azure usando l'immagine del contenitore

  1. Aprire il portale di Azure ed effettuare l'accesso.

  2. Fare clic sull'icona del menu Crea una risorsa, selezionare Calcolo e quindi Selezionare App Web.

    Create a new web app in the Azure portal

  3. Quando viene visualizzata la pagina App Web in Linux, immettere le informazioni seguenti:

    • Scegliere una Sottoscrizione dall'elenco a discesa.

    • Selezionare un Gruppo di risorse esistente o specificare un nome per creare uno nuovo.

    • Immettere un nome univoco per Nome app, ad esempio "wingtiptoyslinux"

    • Specificare Docker Container per Pubblica.

    • Scegliere Linux come Sistema operativo.

    • Selezionare Area.

    • Accettare il Piano Linux e scegliere un Piano di servizio app esistente oppure selezionare Crea nuovo per creare un nuovo piano di servizio app.

    • Fare clic su Avanti: Docker.

    Click the Next: Docker button to proceed.

    Nella pagina App Web selezionare Docker e immettere le informazioni seguenti:

    • Selezionare Contenitore singolo.

    • Registro di sistema: scegliere il contenitore, ad esempio: "wingtiptoysregistry"

    • Immagine: selezionare l'immagine creata in precedenza, ad esempio: "spring-boot-docker"

    • Tag: scegliere il tag per l'immagine; ad esempio: "latest"

    • Comando di avvio: mantenere vuoto perché l'immagine ha già il comando di avvio

    Dopo aver immesso tutte le informazioni precedenti, selezionare Rivedi e crea.

    Finish by selecting Review + Create.

    • Selezionare Rivedi e crea.

Esaminare le informazioni e selezionare Crea.

Al termine della distribuzione, seleziona Vai alla risorsa. La pagina di distribuzione mostra l'URL per l'accesso all'applicazione.

Get URL of deployment

Nota

Azure eseguirà automaticamente il mapping delle richieste Internet al server Tomcat incorporato in esecuzione sulla porta - 80. Se tuttavia il server Tomcat incorporato è stato configurato per l'esecuzione sulla porta - 8080 o su una porta personalizzata, è necessario aggiungere all'app Web una variabile di ambiente che definisce tale porta. A tale scopo, seguire questa procedura:

  1. Aprire il portale di Azure ed effettuare l'accesso.

  2. Selezionare l'icona per App Web e selezionare l'app dalla pagina Servizi app.

  3. Selezionare Configurazione nel riquadro di spostamento a sinistra.

  4. Nella sezione Impostazioni applicazione aggiungere una nuova impostazione denominata WEBSITES_PORT e immettere il numero di porta personalizzato come valore.

  5. Seleziona OK. Quindi selezionare Salva.

Saving a custom port number in the Azure portal

Pulire le risorse

Quando le risorse create in questo articolo non sono più necessarie, usare il portale di Azure per eliminarle in modo da evitare addebiti imprevisti.

Passaggi successivi

Per altre informazioni su Spring e Azure, passare al centro di documentazione di Spring in Azure.

Vedi anche

Per altre informazioni sull'uso delle applicazioni Spring Boot in Azure, vedere gli articoli seguenti:

Per altre informazioni sull'uso di Azure con Java, vedere Azure per sviluppatori Java e la documentazione relativa all'uso di Azure DevOps e Java.

Per maggiori dettagli sul progetto di esempio di Spring Boot in Docker, vedere Spring Boot on Docker Getting Started (Introduzione a Spring Boot in Docker).

Per iniziare a usare proprie applicazioni Spring Boot, vedere Spring Initializr all'indirizzo https://start.spring.io/.

Per altre informazioni su come iniziare a creare una semplice applicazione Spring Boot, vedere Spring Initializr all'indirizzo https://start.spring.io/.

Per altri esempi sull'uso delle immagini personalizzate di Docker con Azure, vedere Uso di un'immagine Docker personalizzata per App Web di Azure in Linux.