Wdrażanie aplikacji Spring Boot w systemie Linux w usłudze Azure App Service

W tym samouczku pokazano, jak za pomocą platformy Docker konteneryzować aplikację Spring Boot i wdrożyć własny obraz platformy Docker na hoście systemu Linux w Azure App Service.

Warunki wstępne

Aby wykonać kroki opisane w tym samouczku, potrzebne są następujące wymagania wstępne:

Notatka

Ze względu na wymagania dotyczące wirtualizacji tego samouczka nie można wykonać kroków opisanych w tym artykule na maszynie wirtualnej. Należy użyć komputera fizycznego z włączonymi funkcjami wirtualizacji.

Tworzenie aplikacji internetowej Spring Boot na platformie Docker — wprowadzenie

W poniższych krokach przedstawiono kroki wymagane do utworzenia prostej aplikacji internetowej Spring Boot i przetestowania jej lokalnie.

  1. Otwórz wiersz polecenia i utwórz katalog lokalny do przechowywania aplikacji i przejdź do tego katalogu; na przykład:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Sklonuj przykładowy projekt Spring Boot na platformie Docker Getting Started do utworzonego katalogu; na przykład:

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Zmień folder na ukończony projekt, na przykład:

    cd gs-spring-boot-docker/complete
    
  4. Skompiluj plik JAR przy użyciu narzędzia Maven; na przykład:

    mvn package
    
  5. Po utworzeniu aplikacji internetowej zmień katalog na target katalog, w którym znajduje się plik JAR, i uruchom aplikację internetową, na przykład:

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. Przetestuj aplikację internetową, przechodząc do niej lokalnie przy użyciu przeglądarki internetowej. Jeśli na przykład masz dostępny program curl i skonfigurowano serwer Tomcat do uruchamiania na porcie 80:

    curl http://localhost
    
  7. Zostanie wyświetlony następujący komunikat: Hello Docker World

    przeglądaj przykładową aplikację lokalnie

Tworzenie Azure Container Registry do użycia jako prywatnego rejestru platformy Docker

W poniższych krokach przedstawiono sposób tworzenia usługi Azure Container Registry przy użyciu witryny Azure Portal.

Notatka

Jeśli chcesz użyć interfejsu wiersza polecenia platformy Azure zamiast witryny Azure Portal, wykonaj kroki opisane w Tworzenie prywatnego rejestru kontenerów platformy Docker przy użyciu interfejsu wiersza polecenia platformy Azure 2.0.

  1. Przejdź do witryny Azure Portal i zaloguj się.

    Po zalogowaniu się do konta w portalu Azure wykonaj kroki opisane w artykule Tworzenie prywatnego rejestru kontenerów platformy Docker przy użyciu portalu Azure. Poniższe kroki parafrazują te instrukcje ze względu na celowość.

  2. Wybierz ikonę menu Nowy, wybierz pozycję Kontenery, a następnie wybierz pozycję Azure Container Registry.

    Tworzenie nowej usługi Azure Container Registry

  3. Po wyświetleniu strony Tworzenie rejestru kontenerów wprowadź nazwę rejestru, subskrypcję, grupę zasobów i lokalizację. Następnie wybierz pozycję Utwórz.

    Konfigurowanie ustawień usługi Azure Container Registry

  4. Wybierz pozycję Klucze dostępu w obszarze Ustawienia i włącz przełącznik Włączone dla użytkownika administracyjnego.

    Włączanie interfejsu użytkownika administratora w witrynie Azure Portal

Skonfiguruj Maven do tworzenia obrazu w Azure Container Registry

  1. Przejdź do ukończonego katalogu projektu aplikacji Spring Boot — na przykład C:\SpringBoot\gs-spring-boot-docker\complete lub /users/robert/SpringBoot/gs-spring-boot-docker/complete — i otwórz plik pom.xml za pomocą edytora tekstów.

  2. Zaktualizuj kolekcję <properties> w pliku pom.xml do najnowszej wersji jib-maven-plugin, wartości serwera logowania i ustawień dostępu dla rejestru Azure Container Registry z poprzedniej sekcji tego samouczka. Na przykład:

    <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. Dodaj jib-maven-plugin do kolekcji <plugins> w pliku pom.xml . W tym przykładzie użyto wersji 3.2.0.

    Określ obraz podstawowy w <from>/<image>, tutaj mcr.microsoft.com/openjdk/jdk:11-ubuntu. Określ nazwę obrazu końcowego do skompilowania z bazy w pliku <to>/<image>.

    Uwierzytelnianie {docker.image.prefix} to serwer logowania na pokazanej wcześniej stronie rejestru. {project.artifactId} to nazwa i numer wersji pliku JAR z pierwszej kompilacji programu Maven projektu.

    <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. Przejdź do ukończonego katalogu projektu aplikacji Spring Boot i uruchom następujące polecenie, aby ponownie skompilować aplikację i wypchnąć kontener do Azure Container Registry:

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

Notatka

Polecenie az acr login ... próbuje zalogować do usługi Azure Container Registry. W przeciwnym razie należy podać <username> i <password> dla jib-maven-plugin. Aby dowiedzieć się więcej, zobacz Metody uwierzytelniania w jib.

Gdy używasz narzędzia Jib do wypychania obrazu do Azure Container Registry, obraz nie używa pliku Dockerfile. Aby uzyskać więcej informacji, zobacz ten artykuł.

Tworzenie aplikacji internetowej w systemie Linux na Azure App Service przy użyciu obrazu kontenera

  1. Przejdź do witryny Azure Portal i zaloguj się.

  2. Wybierz ikonę menu Utwórz zasób, wybierz pozycję Obliczenia, a następnie wybierz pozycję Aplikacja Web.

    Tworzenie nowej aplikacji internetowej w witrynie Azure Portal

  3. Gdy zostanie wyświetlona strona Aplikacja internetowa w systemie Linux , wprowadź następujące informacje:

    • Wybierz swoją subskrypcję z listy rozwijanej.

    • Wybierz istniejącą grupę zasobów lub określ nazwę, aby utworzyć nową grupę zasobów.

    • Wprowadź unikatową nazwę nazwy aplikacji; na przykład: wingtiptoyslinux.

    • Określ Docker Container, aby opublikować.

    • W polu systemu operacyjnego wybierz Linux.

    • Wybierz Region.

    • Zaakceptuj plan systemu Linux i wybierz istniejący plan usługi App Servicelub wybierz pozycję Utwórz nowy, aby utworzyć nowy plan usługi App Service.

    • Wybierz pozycję Dalej: Docker.

    Kliknij przycisk Dalej: Platforma Docker, aby kontynuować.

    Na stronie Web App wybierz pozycję Dockeri wprowadź następujące informacje:

    • Wybierz pojedynczy kontener .

    • Registry: wybierz kontener, na przykład: wingtiptoysregistry.

    • Image: Wybierz utworzony wcześniej obraz, na przykład: spring-boot-docker.

    • Tag: Wybierz tag obrazu, na przykład: najnowsze.

    • Polecenie uruchamiania: pozostaw to pole puste, ponieważ obraz ma już polecenie uruchamiania.

    Po wprowadzeniu wszystkich powyższych informacji wybierz pozycję Przejrzyj i utwórz.

    Zakończ, wybierając pozycję Przejrzyj i utwórz.

    • Wybierz Przejrzyj i utwórz.

Przejrzyj informacje i wybierz opcję Utwórz.

Po zakończeniu wdrożenia wybierz Przejdź do zasobu. Na stronie wdrażania zostanie wyświetlony adres URL umożliwiający uzyskanie dostępu do aplikacji.

Pobierz adres URL wdrożenia

Notatka

Azure automatycznie mapuje żądania internetowe na osadzony serwer Tomcat działający na porcie 80. Jeśli jednak skonfigurujesz osadzony serwer Tomcat tak, aby był uruchamiany na porcie 8080 lub niestandardowym, musisz dodać zmienną środowiskową do aplikacji internetowej, która definiuje port dla osadzonego serwera Tomcat. Aby dodać zmienną środowiskową, wykonaj następujące kroki:

  1. Przejdź do witryny Azure Portal i zaloguj się.

  2. Wybierz ikonę Web Appsi wybierz aplikację na stronie App Services.

  3. Wybierz pozycję Konfiguracja w okienku nawigacji po lewej stronie.

  4. W sekcji Ustawienia aplikacji dodaj nowe ustawienie o nazwie WEBSITES_PORT i wprowadź niestandardowy numer portu dla wartości.

  5. Wybierz pozycję OK. Następnie wybierz pozycję Zapisz.

pl-PL: Zapisywanie niestandardowego numeru portu w portalu Azure

Czyszczenie zasobów

Jeśli zasoby nie są już potrzebne, użyj portalu Azure, aby je usunąć. Usunięcie zasobów pomaga uniknąć nieoczekiwanych opłat.

Następne kroki

Aby dowiedzieć się więcej na temat platformy Spring i platformy Azure, przejdź do Centrum dokumentacji platformy Azure.

Zobacz też

Aby uzyskać więcej informacji na temat korzystania z aplikacji Spring Boot na platformie Azure, zobacz następujące artykuły:

Aby uzyskać więcej informacji na temat korzystania z platformy Azure z językiem Java, zobacz Azure for Java Developers oraz Praca z usługami Azure DevOps i Java.

Aby uzyskać więcej informacji na temat przykładowego projektu Spring Boot na platformie Docker, zobacz Spring Boot on Docker Getting Started.

Aby uzyskać pomoc w rozpoczęciu pracy z własnymi aplikacjami Spring Boot, odwiedź Spring Initializr na stronie https://start.spring.io/.

Aby uzyskać więcej informacji na temat rozpoczynania pracy z tworzeniem prostej aplikacji Spring Boot, odwiedź witrynę Spring Initializr na stronie https://start.spring.io/.

Aby uzyskać więcej przykładów używania niestandardowych obrazów platformy Docker z Azure, zobacz Using a custom Docker image for Azure Web App on Linux (Używanie niestandardowego obrazu platformy Docker dla aplikacji internetowej Azure w systemie Linux).