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

W tym samouczku przedstawiono procedurę konteneryzacji aplikacji Spring Boot przy użyciu platformy Docker i wdrażania własnego obrazu platformy Docker na hoście z systemem Linux w usłudze Azure App Service.

Wymagania wstępne

Do wykonania kroków opisanych w tym samouczku wymagane są następujące elementy:

Uwaga

Ze względu na wymagania tego samouczka dotyczące wirtualizacji 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 on Docker Getting Started

Poniżej przedstawiono kroki wymagane do utworzenia prostej aplikacji internetowej Spring Boot i przetestowania jej lokalnie.

  1. Otwórz wiersz polecenia i utwórz katalog lokalny, w którym będzie przechowywana aplikacja, a następnie przejdź do tego katalogu, na przykład:

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

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Zmień katalog 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 przejdź do katalogu target, 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ęp do narzędzia curl, a serwer Tomcat został skonfigurowany do uruchamiania na porcie 80:

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

    Browse Sample App Locally

Tworzenie rejestru usługi Azure Container Registry do użytku jako prywatny rejestr platformy Docker

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

Uwaga

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

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

    Po zalogowaniu się do konta w witrynie Azure Portal wykonaj kroki opisane w artykule Tworzenie prywatnego rejestru kontenerów platformy Docker przy użyciu witryny Azure Portal , które zostały sparafrasowane w poniższych krokach, aby zapewnić celowość.

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

    Create a new Azure Container Registry

  3. Gdy zostanie wyświetlona strona Tworzenie rejestru kontenerów, wprowadź odpowiednie wartości w polach Nazwa rejestru, Subskrypcja, Grupa zasobów i Lokalizacja. Następnie wybierz Utwórz.

    Configure Azure Container Registry settings

  4. Wybierz pozycję Klucze dostępu w obszarze Ustawienia i włącz przełącznik Włączone za użytkownikiem Administracja.

    Enable admin user UI in the Azure portal

Konfigurowanie narzędzia Maven do kompilowania obrazu w usłudze Azure Container Registry

  1. Przejdź do katalogu ukończonego projektu dla aplikacji Spring Boot (na przykład: "C:\SpringBoot\gs-spring-boot-docker\complete" lub "/users/robert/SpringBoot/gs-spring-boot-docker/complete"), a następnie otwórz plik pom.xml za pomocą edytora tekstów.

  2. Zaktualizuj kolekcję <properties> w pliku pom.xml przy użyciu najnowszej wersji wtyczki jib-maven-plugin, wartości serwera logowania i ustawień dostępu dla rejestru usługi 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 wtyczkę 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 wierszu <from>/<image> tutaj mcr.microsoft.com/openjdk/jdk:11-ubuntu. Określ nazwę obrazu końcowego, który ma zostać skompilowany przy użyciu obrazu podstawowego w wierszu <to>/<image>.

    Wartość {docker.image.prefix} uwierzytelniania to Serwer logowania na pokazanej wcześniej stronie rejestru. Wartość {project.artifactId} to nazwa i numer wersji pliku JAR z pierwszej kompilacji projektu przy użyciu narzędzia Maven.

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

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

Uwaga

  1. Polecenie az acr login ... spróbuje zalogować się do usługi Azure Container Registry. W przeciwnym razie należy podać <username> i <password> w przypadku wtyczki jib-maven-plugin, zobacz Metody uwierzytelniania w narzędziu jib.
  2. Jeśli używasz programu Jib do wypychania obrazu do usługi Azure Container Registry, obraz nie będzie używać pliku Dockerfile, zobacz ten dokument, aby uzyskać szczegółowe informacje.

Tworzenia aplikacji internetowej w systemie Linux w usłudze Azure App Service przy użyciu obrazu kontenera

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

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

    Create a new web app in the Azure portal

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

    • Wybierz pozycję Subskrypcja z listy rozwijanej.

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

    • Wprowadź unikatową nazwę w polu Nazwa aplikacji, na przykład: „wingtiptoyslinux

    • Określ wartość Docker Container, aby opublikować (opcja Publikuj).

    • Wybierz Linux jako System operacyjny.

    • Wybierz opcję Region.

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

    • Kliknij przycisk Dalej: Docker.

    Click the Next: Docker button to proceed.

    Na stronie Aplikacja internetowa wybierz pozycję Docker i wprowadź następujące informacje:

    • Wybierz opcję Jeden kontener.

    • Rejestr: wybierz kontener, na przykład: "wingtiptoysregistry"

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

    • Tag: wybierz tag obrazu, na przykład: "latest"

    • Polecenie uruchamiania: pozostaw ją pustą, ponieważ obraz ma już polecenie uruchamiania

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

    Finish by selecting Review + Create.

    • Wybierz pozycję Przejrzyj i utwórz.

Przejrzyj informacje i wybierz pozycję Utwórz.

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

Get URL of deployment

Uwaga

Platforma Azure będzie automatycznie mapować żądania internetowe na osadzony serwer Tomcat, który działa na porcie 80. Jednak jeśli osadzony serwer Tomcat został skonfigurowany tak, aby był uruchamiany na porcie 8080 lub niestandardowym porcie, należy dodać do aplikacji internetowej zmienną środowiskową, która definiuje port osadzonego serwera Tomcat. Aby to zrobić, wykonaj następujące kroki:

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

  2. Wybierz ikonę usługi Web Apps i wybierz aplikację na stronie Usługi 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 przycisk OK. Następnie wybierz opcję Zapisz.

Saving a custom port number in the Azure portal

Czyszczenie zasobów

Gdy zasoby utworzone w tym artykule nie będą już potrzebne, usuń je w witrynie Azure Portal, aby uniknąć naliczania opłat.

Następne kroki

Aby dowiedzieć się więcej na temat oprogramowania Spring i platformy Azure, przejdź do centrum dokumentacji dotyczącej oprogramowania Spring na platformie Azure.

Zobacz też

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

Aby uzyskać więcej informacji na temat korzystania z platformy Azure przy użyciu języka Java, zapoznaj się z tematami Platforma Azure dla deweloperów języka Java oraz Praca z narzędziami Azure DevOps i językiem Java.

Aby uzyskać więcej informacji na temat przykładowego projektu aplikacji Spring Boot na platformie Docker, zobacz Spring Boot na platformie Docker — Wprowadzenie.

Aby uzyskać pomoc dotyczącą rozpoczynania pracy z własnymi aplikacjami Spring Boot, zapoznaj się z narzędziem Spring Initializr na stronie https://start.spring.io/.

Aby uzyskać więcej informacji na temat rozpoczynania tworzenia prostej aplikacji Spring Boot, zapoznaj się z narzędziem Spring Initializr na stronie https://start.spring.io/.

Aby uzyskać dodatkowe przykłady użycia niestandardowych obrazów platformy Docker z platformą Azure, zobacz Używanie niestandardowego obrazu Docker dla usługi Azure Web App w systemie Linux.