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:
- En Azure-prenumeration. Om du inte redan har en Azure-prenumeration kan du aktivera din MSDN-prenumerantförmån eller registrera dig för ett kostnadsfritt Azure-konto.
- Azures kommandoradsgränssnitt (CLI).
- Ett Java Development Kit (JDK) som stöds. Mer information om de JDK:er som är tillgängliga för användning när du utvecklar i Azure finns i Java-stöd i Azure och Azure Stack.
- Apache Maven-byggverktyget (version 3).
- En Git-klient.
- En Docker-klient.
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.
Öppna en kommandotolk och skapa en lokal katalog för ditt program och byt till den katalogen, till exempel:
mkdir SpringBoot cd SpringBoot
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
Byt katalog till det slutförda projektet, till exempel:
cd gs-spring-boot-docker/complete
Bygg JAR-filen med hjälp av Maven, till exempel:
mvn package
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
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
Du bör se följande meddelande: Hello Docker World
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.
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.
Klicka på menyikonen för Ny, välj Containrar och välj sedan Azure Container Registry.
När sidan Skapa containerregister visas anger du Registernamn, Prenumeration, Resursgrupp och Plats. Välj sedan Skapa.
Välj Åtkomstnycklar under Inställningar och aktivera växeln Aktiverad bakom administratörsanvändaren.
Konfigurera Maven för att skapa en avbildning i Azure Container Registry
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.
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>
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ärmcr.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>
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
- 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. - 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
Gå till Azure Portal och logga in.
Klicka på menyikonen för Skapa en resurs, välj Beräkning och välj sedan Webbapp.
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.
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.
- 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.
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:
Gå till Azure Portal och logga in.
Välj ikonen för Web Apps och välj din app på sidan App Services .
Välj Konfiguration i det vänstra navigeringsfönstret.
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.
Välj OK. Välj sedan Spara.
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 Initializr på https://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.