Distribuera ett Spring Boot-program till Linux på Azure App Service

I den här självstudien går vi igenom hur du använder Docker för att använda ditt Spring Boot-program och distribuera din egen Docker-avbildning till en Linux-värd i Azure App Service.

Förutsättningar

För att kunna gå igenom självstudien behöver du följande:

Kommentar

På grund av kraven för virtualisering i den här självstudien kan du inte följa stegen i den här artikeln på en virtuell dator. Du måste använda en fysisk dator med aktiverade funktioner för virtualisering.

Skapa webbappen Spring Boot on Docker Getting Started

Följande steg beskriver vad som krävs för att skapa ett enkelt Spring Boot-webbprogram för och testa det lokalt.

  1. Öppna en kommandotolk och skapa en lokal katalog för ditt program och byt till den katalogen, till exempel:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Klona exempelprojektet Komma igång med Spring Boot i Docker till den katalog som du har skapat, till exempel:

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Byt katalog till det slutförda projektet, till exempel:

    cd gs-spring-boot-docker/complete
    
  4. Bygg JAR-filen med hjälp av Maven, till exempel:

    mvn package
    
  5. När webbappen har skapats byter du katalog till den target-katalog där JAR-filen finns och startar webbprogrammet, till exempel:

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. Testa webbappen genom att bläddra till den lokalt med hjälp av en webbläsare. Om du till exempel har tillgång till Curl och du har konfigurerat Tomcat-servern så att den körs på port 80:

    curl http://localhost
    
  7. Du bör se följande meddelande: Hello Docker World

    Browse Sample App Locally

Skapa ett Azure-containerregister att använda som privat Docker-register

Följande steg beskriver hur du använder Azure Portal för att skapa ett Azure-containerregister.

Kommentar

Om du vill använda Azure CLI i stället för Azure Portal följer du stegen i Skapa ett privat Docker-containerregister med hjälp av Azure CLI 2.0.

  1. Gå till Azure Portal och logga in.

    När du har loggat in på ditt konto på Azure-portalen följer du stegen i artikeln Skapa ett privat Docker-containerregister med hjälp av Azure-portalen , som parafraseras i följande steg för att få utökningar.

  2. Klicka på menyikonen för Ny, välj Containrar och välj sedan Azure Container Registry.

    Create a new Azure Container Registry

  3. När sidan Skapa containerregister visas anger du Registernamn, Prenumeration, Resursgrupp och Plats. Välj sedan Skapa.

    Configure Azure Container Registry settings

  4. Välj Åtkomstnycklar under Inställningar och aktivera växeln Aktiverad bakom administratörsanvändaren.

    Enable admin user UI in the Azure portal

Konfigurera Maven för att skapa en avbildning i Azure Container Registry

  1. Gå till den slutförda projektkatalogen för spring boot-programmet (till exempel "C:\SpringBoot\gs-spring-boot-docker\complete" eller "/users/robert/SpringBoot/gs-spring-boot-docker/complete" och öppna pom.xml-filen med en textredigerare.

  2. Uppdatera <properties>-samlingen i pom.xml-filen med de senaste versionen av jib-maven-plugin, inloggningsserverns värde och åtkomstinställningarna till ditt Azure-containerregister från föregående avsnitt i den här självstudien. Till exempel:

    <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. Lägg till jib-maven-plugin till <plugins>-samlingen i pom.xml-filen. I det här exemplet används version 3.2.0.

    Ange basavbildningen på <from>/<image>, här mcr.microsoft.com/openjdk/jdk:11-ubuntu. Ange namnet på den slutgiltiga avbildning som ska skapas från basen i <to>/<image>.

    Autentisering {docker.image.prefix} är Inloggningsserver på registersidan som visades tidigare. {project.artifactId} är JAR-filens namn och versionsnummer från den första Maven-versionen av projektet.

    <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. Navigera till den slutförda projektkatalogen för ditt Spring Boot-program och kör följande kommando för att återskapa programmet och push-överför containern till ditt Azure-containerregister:

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

Kommentar

  1. Kommandot az acr login ... försöker logga in på Azure Container Registry, annars måste du ange <username> och <password> för jib-maven-plugin, se Autentiseringsmetoder i jib.
  2. När du använder Jib för att skicka avbildningen till Azure Container Registry använder avbildningen inte Dockerfile. Mer information finns i det här dokumentet.

Skapa en webbapp på Linux på Azure App Service med hjälp av containeravbildningen

  1. Gå till Azure Portal och logga in.

  2. Klicka på menyikonen för Skapa en resurs, välj Beräkning och välj sedan Webbapp.

    Create a new web app in the Azure portal

  3. När sidan Web App on Linux visas anger du följande information:

    • Välj en Prenumeration från listrutan.

    • Välj en befintlig Resursgrupp, eller ange ett namn för att skapa en ny resursgrupp.

    • Ange ett unikt namn för Appnamn, till exempel: ”wingtiptoyslinux

    • Ange Docker Container för Publicera.

    • Välj Linux som Operativsystem.

    • Välj Region.

    • Acceptera Linux-plan och välj en befintlig App Service-plan, eller välj Skapa ny för att skapa en ny App Service-plan.

    • Klicka på Nästa: Docker.

    Click the Next: Docker button to proceed.

    På sidan Webbapp väljer du Docker och anger följande information:

    • Välj Enskild container.

    • Register: Välj din container, till exempel: "wingtiptoysregistry"

    • Bild: Välj den avbildning som skapades tidigare, till exempel"spring-boot-docker"

    • Tagg: Välj taggen för bilden, till exempel: "senaste"

    • Startkommando: Håll det tomt eftersom avbildningen redan har startkommandot

    När du har angett all ovanstående information väljer du Granska + skapa.

    Finish by selecting Review + Create.

    • Välj Granska + skapa.

Granska informationen och välj Skapa.

När distributionen är slutförd, välj Gå till resurs. Distributionssidan visar URL: en för att komma åt programmet.

Get URL of deployment

Kommentar

Azure mappar automatiskt Internet-förfrågningar till en inbäddad Tomcat-server som körs på port 80. Om du har konfigurerat din inbäddade Tomcat-server att köra på port 8080 eller på en anpassad port måste du dock lägga till en miljövariabel i webbappen som definierar porten för den inbäddade Tomcat-servern. Gör det med hjälp av följande steg:

  1. Gå till Azure Portal och logga in.

  2. Välj ikonen för Web Apps och välj din app på sidan App Services .

  3. Välj Konfiguration i det vänstra navigeringsfönstret.

  4. I avsnittet Programinställningar lägger du till en ny inställning med namnet WEBSITES_PORT och anger det anpassade portnumret för värdet.

  5. Välj OK. Välj sedan Spara.

Saving a custom port number in the Azure portal

Rensa resurser

När de inte längre behövs använder du Azure Portal för att ta bort de resurser som skapats i den här artikeln för att undvika oväntade kostnader.

Nästa steg

Om du vill veta mer om Spring och Azure kan du fortsätta till dokumentationscentret för Spring i Azure.

Se även

Mer information om hur du använder Spring Boot-program på Azure finns i följande artiklar:

Mer information om hur du använder Azure med Java finns i Azure för Java-utvecklare och Arbeta med Azure DevOps och Java.

Du kan läsa mer om exempelprojektet Spring Boot on Docker i Spring Boot on Docker Getting Started.

Om du vill ha hjälp med att börja skriva egna Spring Boot-program kan du läsa Spring Initializrhttps://start.spring.io/.

Mer information om att komma igång med att skapa ett enkelt Spring Boot-program finns i Spring Initializr på https://start.spring.io/.

Fler exempel på hur du använder anpassade Docker-avbildningar med Azure finns i Använda en anpassad Docker-avbildning för Azure Web App on Linux.