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

Questa esercitazione illustra come usare Docker per inserire in contenitori l'applicazione Spring Boot e distribuire un'immagine Docker personalizzata in un host Linux nel Servizio app di Azure.

Prerequisiti

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

Nota

A causa dei requisiti di virtualizzazione di questa esercitazione, non è possibile seguire i passaggi descritti in questo articolo in una macchina virtuale. È necessario usare un computer fisico con funzionalità di virtualizzazione abilitate.

Creare l'app Web Introduttiva di Spring Boot in Docker

La procedura seguente illustra i passaggi necessari per creare una semplice applicazione Web Spring Boot e testarla in locale.

  1. Aprire un prompt dei comandi e creare una directory locale per contenere l'applicazione e passare a tale directory; ad esempio:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Clonare il progetto di esempio Spring Boot su Docker Getting Started nella directory creata; per esempio:

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

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

    mvn package
    
  5. Dopo aver creato l'applicazione web, passare alla directory target in cui si trova il file JAR e avviare l'applicazione web; ad esempio:

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. Testare l'app web accedendo localmente utilizzando un browser web. Ad esempio, se è disponibile curl ed è stato configurato il server Tomcat per l'esecuzione sulla porta 80:

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

    Sfoglia app di esempio in locale

Creare un Registro Azure Container da usare come registro Docker privato

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

Nota

Se si vuole usare l'interfaccia della riga di comando di Azure anziché il portale di Azure, seguire la procedura descritta in Creare un registro contenitori Docker privato usando l'interfaccia della riga di comando di Azure 2.0.

  1. Vai al portale di Azure ed esegui 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 il portale di Azure. La procedura seguente parafrasa tali istruzioni per motivi di espedienza.

  2. Selezionare l'icona del menu per Nuovo, selezionare Contenitori e quindi selezionare Registro Azure Container.

    Creare un nuovo Registro Azure Container

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

    Configurare le impostazioni di Registro Azure Container

  4. Selezionare Chiavi di accesso in Impostazioni e attivare l'opzione Abilitato per l'utente amministratore.

    Abilitare l'interfaccia utente amministratore nel portale di Azure

Configurare Maven per creare l'immagine nel Registro di Azure per i Contenitori

  1. Passare alla directory del progetto completata per l'applicazione Spring Boot, ad esempio C:\SpringBoot\gs-spring-boot-docker\complete o /users/robert/SpringBoot/gs-spring-boot-docker/complete , quindi aprire il filepom.xml con un editor di testo.

  2. Aggiorna la raccolta <properties> nel file pom.xml con la versione più recente di jib-maven-plugin, il valore del server di accesso e le impostazioni di accesso del tuo Registro Azure Container dalla sezione precedente di questa esercitazione. Per 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 <plugins> collezione nel file pom.xml. Questo esempio usa la versione 3.2.0.

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

    Autenticazione {docker.image.prefix} è il server di accesso nella pagina del registro mostrata in precedenza. Il {project.artifactId} è il nome e il numero di versione del file JAR dalla prima build 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. Vai alla directory del progetto completato della tua applicazione Spring Boot ed esegui il comando seguente per ricompilare l'applicazione ed eseguire il push del contenitore in Registro Azure Container:

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

Nota

Il comando az acr login ... tenta di accedere a Registro Azure Container. In caso contrario, è necessario specificare <username> e <password> per jib-maven-plugin. Per altre informazioni, vedere Metodi di autenticazione in jib.

Quando si usa Jib per eseguire il push dell'immagine nel Registro Azure Container, l'immagine non usa il Dockerfile. Per altre informazioni, vedi questo articolo.

Creare un'app Web in esecuzione in Linux in Servizio app di Azure usando la propria immagine del contenitore

  1. Vai al portale di Azure ed esegui l'accesso.

  2. Selezionare l'icona del menu per Crea una risorsa, selezionare Calcolo e quindi selezionare App Web.

    Creare una nuova app Web nel portale di Azure

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

    • Scegli il abbonamento dall'elenco a discesa.

    • Scegliere un gruppo di risorse esistenteoppure specificare un nome per creare un nuovo gruppo di risorse.

    • Immettere un nome univoco per il nome dell'app; ad esempio: wingtiptoyslinux.

    • Specificare Docker Container per Pubblica.

    • Per il campo del sistema operativo , scegliere Linux.

    • Selezionare Region.

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

    • Selezionare Avanti: Docker.

    Fare clic sul pulsante Avanti: Docker per continuare.

    Nella pagina app Web selezionare Dockere immettere le informazioni seguenti:

    • Selezionare contenitore singolo.

    • Registro: scegli il contenitore, ad esempio wingtiptoysregistry.

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

    • Tag: Scegli il tag per l'immagine, per esempio: più recente.

    • 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.

    Procedi selezionando Rivedi e crea.

    • Seleziona Rivedi e crea.

Esaminare le informazioni e selezionare Crea.

Al termine della distribuzione, selezionare Vai alla risorsa. Nella pagina di distribuzione viene visualizzato l'URL per accedere all'applicazione.

Ottenere l'URL della distribuzione

Nota

Azure indirizza automaticamente le richieste provenienti da Internet al server Tomcat incorporato in esecuzione sulla porta 80. Tuttavia, se si configura il server Tomcat incorporato per l'esecuzione sulla porta 8080 o su una porta personalizzata, è necessario aggiungere una variabile di ambiente all'app Web che definisce la porta per il server Tomcat incorporato. Per aggiungere la variabile di ambiente, seguire questa procedura:

  1. Vai al portale di Azure ed esegui l'accesso.

  2. Seleziona l'icona per App Webe seleziona l'app dalla pagina Servizi App.

  3. Selezionare Configurazione nel pannello di navigazione a sinistra.

  4. Nella sezione delle impostazioni dell'applicazione, aggiungere una nuova impostazione denominata WEBSITES_PORT e immettere il numero di porta personalizzato come valore.

  5. Selezionare OK. Selezionare quindi Salva.

Salvataggio di un numero di porta personalizzato nel portale di Azure

Pulire le risorse

Quando le risorse non sono più necessarie, usare il portale di Azure per eliminarle. L'eliminazione delle risorse consente di evitare addebiti imprevisti.

Passaggi successivi

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

Vedere anche

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

Per altre informazioni sull'uso di Azure con Java, vedere Azure for Java Developers e Lavorare con Azure DevOps e Java.

Per altri dettagli sul progetto di esempio Spring Boot in Docker, vedere Spring Boot in Introduzione a Docker.

Per informazioni su come iniziare a usare le proprie applicazioni Spring Boot, consulta 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 di come usare immagini Docker personalizzate con Azure, vedere Uso di un'immagine Docker personalizzata per Azure'app Web in Linux.