Distribuera ett Spring Boot-program till Linux i Azure App Service

Den här självstudien visar hur du använder Docker för att containerisera 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 slutföra stegen i den här självstudien behöver du följande krav:

Obs

På grund av virtualiseringskraven i den här handledningen kan du inte följa stegen i den här artikeln på en virtuell dator. Du måste använda en fysisk dator med virtualiseringsfunktioner aktiverade.

Skapa Webbappen Spring Boot på Docker Komma igång

Följande steg går igenom de steg som krävs för att skapa ett enkelt Spring Boot-webbprogram och testa det lokalt.

  1. Öppna en kommandotolk och skapa en lokal katalog för att lagra ditt program och ändra till den katalogen. till exempel:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Klona Spring Boot på Docker Komma igång med exempelprojekt till katalogen du skapade; till exempel:

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Ändra katalogen till det slutförda projektet. till exempel:

    cd gs-spring-boot-docker/complete
    
  4. Skapa JAR-filen med Maven; till exempel:

    mvn package
    
  5. När webbappen har skapats ändrar du katalogen till katalogen target där JAR-filen finns och startar webbappen, 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 curl tillgängligt och har konfigurerat Tomcat-servern att köras på port 80:

    curl http://localhost
    
  7. Följande meddelande visas: Hello Docker World

    Bläddra bland exempelappen lokalt

Skapa en Azure Container Registry som ska användas som ett privat Docker-register

Följande steg går igenom hur du använder Azure-portalen för att skapa ett Azure Container Registry.

Obs

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

  1. Bläddra till Azure-portalen 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. Följande steg parafraserar dessa instruktioner för lämplighetens skull.

  2. Välj menyikonen för Nytt, välj Containrar och välj sedan Azure Container Registry.

    Skapa en ny Azure Container Registry-

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

    Konfigurera Azure Container Registry-inställningar

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

    Aktivera användargränssnittet för administratörer i Azure-portalen

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

  1. Gå till den slutförda projektkatalogen för ditt Spring Boot-program – till exempel C:\SpringBoot\gs-spring-boot-docker\complete eller /users/robert/SpringBoot/gs-spring-boot-docker/complete – och öppna filenpom.xml med en textredigerare.

  2. <properties> Uppdatera samlingen i filenpom.xml med den senaste versionen av jib-maven-plugin, inloggningsserverns värde och åtkomstinställningar för din Azure Container Registry 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 i samlingen av <plugins> i filen pom.xml. 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 slutliga avbildningen som ska skapas från basen i <to>/<image>.

    Autentisering {docker.image.prefix} är inloggningsservern på registersidan som visades tidigare. {project.artifactId} är namnet och versionsnumret för JAR-filen 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. Gå 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öra containern till din Azure Container Registry:

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

Obs

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. Mer information finns i Autentiseringsmetoder i jib.

När du använder Jib för att skicka avbildningen till Azure Container Registry använder inte avbildningen Dockerfile. Mer information finns i den här artikeln.

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

  1. Bläddra till Azure-portalen och logga in.

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

    Skapa en ny webbapp i Azure-portalen

  3. När sidan Webbapp på Linux visas anger du följande information:

    • Välj din prenumeration i listrutan.

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

    • Ange ett unikt namn för appnamnet. till exempel : wingtiptoyslinux.

    • Ange Docker Container till Publicera.

    • I fältet Operativsystem väljer du Linux.

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

    • Välj Nästa: Docker.

    Klicka på knappen Nästa: Docker för att fortsätta.

    På sidan Web App väljer du Dockeroch anger följande information:

    • Välj enskild container.

    • Registry: Välj din container, till exempel: wingtiptoysregistry.

    • Image: Välj den bild som skapades tidigare, till exempel: spring-boot-docker.

    • Tag: 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 föregående information väljer du Granska + skapa.

    Slutför genom att välja Granska + skapa.

    • Välj Granska och skapa.

Granska informationen och välj Skapa.

När distributionen är klar väljer du Gå till resurs. Distributionssidan visar URL:en för att komma åt programmet.

Hämta URL för distribution

Obs

Azure mappar automatiskt Internetbegäranden till den inbäddade Tomcat-servern som körs på port 80. Men om du konfigurerar den inbäddade Tomcat-servern så att den körs på port 8080 eller en anpassad port måste du lägga till en miljövariabel i webbappen som definierar porten för din inbäddade Tomcat-server. Använd följande steg för att lägga till miljövariabeln:

  1. Bläddra till Azure-portalen och logga in.

  2. Välj ikonen för Web Appsoch 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 ditt anpassade portnummer för värdet.

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

Spara ett anpassat portnummer i Azure-portalen

Rensa resurser

När du inte längre behöver resurserna använder du Azure-portalen för att ta bort dem. Om du tar bort resurserna kan du undvika oväntade avgifter.

Nästa steg

Om du vill veta mer om Spring och Azure fortsätter du till dokumentationscentret för Spring on Azure.

Se även

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

Mer information om hur du använder Azure med Java finns i Azure for Java Developers och Working with Azure DevOps and Java.

Mer information om Exempelprojektet Spring Boot på Docker finns i Spring Boot på Komma igång med Docker.

Om du vill ha hjälp med att komma igång med dina egna Spring Boot-program kan du se Spring Initializr på https://start.spring.io/.

Mer information om hur du kommer 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 i Linux.