将 Spring Boot 应用程序部署到 Azure 应用服务上的 Linux
本教程逐步讲解如何使用 Docker 将 Spring Boot 应用程序容器化,并将自己的 docker 映像部署到 Azure 应用服务中的 Linux 主机。
先决条件
若要完成本教程中的步骤,需要满足以下先决条件:
- Azure 订阅;如果还没有 Azure 订阅,可以激活 MSDN 订阅者权益 或注册 免费 Azure 帐户。
- Azure 命令行接口 (CLI)。
- 支持的 Java 开发工具包(JDK)。 有关在 Azure 上进行开发时可用的 JDK 的详细信息,请参阅 Azure 和 Azure Stack上的
Java 支持。 - Apache Maven 生成工具(版本 3)。
- Git 客户端。
- Docker 客户端。
注意
由于本教程的虚拟化要求,无法在虚拟机上执行本文中的步骤:必须使用启用了虚拟化功能的物理计算机。
在 Docker 入门 Web 应用上创建 Spring Boot
以下步骤逐步讲解创建简单的 Spring Boot Web 应用程序并在本地测试它所需的步骤。
打开命令提示符并创建一个用于保存应用程序的本地目录,并更改为该目录;例如:
mkdir SpringBoot cd SpringBoot
将 Docker 上的 Spring Boot 入门示例项目克隆到你创建的目录中;例如:
git clone https://github.com/spring-guides/gs-spring-boot-docker.git
将目录切换到已完成的项目,例如:
cd gs-spring-boot-docker/complete
使用 Maven 生成 JAR 文件;例如:
mvn package
创建 Web 应用后,将目录更改为 JAR 文件所在的
target
目录并启动 Web 应用;例如:cd target java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
使用 Web 浏览器在本地浏览测试该 Web 应用。 例如,如果有 curl 可用,并且已将 Tomcat 服务器配置为在端口 80 上运行:
curl http://localhost
应会看到以下消息:Hello Docker World
创建用作专用 Docker 注册表的 Azure 容器注册表
以下步骤逐步讲解如何使用 Azure 门户创建 Azure 容器注册表。
注意
如果要使用 Azure CLI 而不是 Azure 门户,请按照 使用 Azure CLI 2.0创建专用 Docker 容器注册表中的步骤操作。
浏览到 Azure 门户 并登录。
登录到 Azure 门户上的帐户后,请按照使用 Azure 门户创建专用 Docker 容器注册表文章中的步骤进行操作;为了方便起见,接下来的步骤中改述了这些步骤。
单击 新建的菜单图标,选择 容器,然后选择 Azure 容器注册表。
显示 “创建容器注册表”页时,输入 注册表名称、订阅、资源组和 位置。 然后选择 创建。
在设置下面选择访问密钥,并在管理员用户后面打开已启用开关。
配置 Maven 以构建映像并将其推送到您的 Azure 容器注册表
导航到 Spring Boot 应用程序的已完成项目目录(例如:C:\SpringBoot\gs-spring-boot-docker\complete 或 /users/robert/SpringBoot/gs-spring-boot-docker/complete),并使用文本编辑器打开 pom.xml 文件。
使用本教程上一部分中 Azure 容器注册表的最新版本的 jib-maven-plugin、登录服务器值和访问设置更新 pom.xml 文件中的
<properties>
集合。 例如:<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>
将 jib-maven-plugin 添加到 pom.xml 文件内的
<plugins>
集合中。 此示例使用版本 3.2.0。在
<from>/<image>
中指定基本映像,即此处的mcr.microsoft.com/openjdk/jdk:11-ubuntu
。 指定要从<to>/<image>
中的基本映像生成的最终映像的名称。身份验证
{docker.image.prefix}
是前面显示的注册表页上的登录服务器。{project.artifactId}
是项目第一个 Maven 内部版本的 JAR 文件的名称和版本号。<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>
导航到 Spring Boot 应用程序的已完成项目目录,并运行以下命令以重新生成应用程序并将容器推送到 Azure 容器注册表:
az acr login --name wingtiptoysregistry && mvn compile jib:build
注意
使用容器映像在 Azure 应用服务上的 Linux 上创建 Web 应用
浏览到 Azure 门户 并登录。
单击创建资源的菜单图标,选择计算,然后选择 Web 应用。
显示 Linux 页上的
Web 应用时,请输入以下信息: 选择下拉列表中的订阅。
选择现有的 资源组,或指定用于创建新资源组的名称。
输入应用名称的唯一名称;例如:wingtiptoyslinux
指定
Docker Container
以进行发布。对于“操作系统”字段,请选择 Linux。
选择区域。
接受 Linux 计划 并选择现有的 应用服务计划,或选择 创建新的 以创建新的应用服务计划。
单击“下一步”:Docker。
在 Web 应用 页上,选择 Docker,然后输入以下信息:
选择单个容器。
注册表:选择您的容器,例如:wingtiptoysregistry。
镜像:选择之前创建的镜像,例如:spring-boot-docker。
标签:选择图像的标签,例如:最新。
启动命令:将其留空,因为镜像中已经包含启动命令。
输入上述所有信息后,选择查看 + 创建。
选择“审阅 + 创建”以完成
- 选择“查看 + 创建”。
查看信息,然后选择“创建”。
部署完成后,选择 转到资源。 部署页显示用于访问应用程序的 URL。
的 URL
注意
Azure 会自动将 Internet 请求映射到运行在端口 80 的嵌入式 Tomcat 服务器上。 但是,如果将嵌入式 Tomcat 服务器配置为在端口 - 8080 或自定义端口上运行,则需要将环境变量添加到 Web 应用,该 Web 应用定义嵌入式 Tomcat 服务器的端口。 为此,请使用以下步骤:
浏览到 Azure 门户 并登录。
选择 Web 应用的图标,然后从 应用服务 页中选择应用。
在左侧导航窗格中,选择配置。
在 应用程序设置 部分中,添加名为 WEBSITES_PORT 的新设置,并输入值的自定义端口号。
选择“确定”。 然后选择保存。
清理资源
不再需要时,请使用 Azure 门户 删除本文中创建的资源,以避免意外费用。
后续步骤
若要了解有关 Spring 和 Azure 的详细信息,请继续阅读 Azure 上的 Spring 文档中心。
另请参阅
有关在 Azure 上使用 Spring Boot 应用程序的详细信息,请参阅以下文章:
有关如何将 Azure 与 Java 配合使用的详细信息,请参阅面向 Java 开发人员的 Azure 和使用 Azure DevOps 和 Java。
有关 Docker 上的 Spring Boot 示例项目的更多详细信息,请参阅 Docker 上的 Spring Boot 入门。
有关开始使用自己的 Spring Boot 应用程序的帮助,请参阅 https://start.spring.io/ 中的 Spring Initializr。
有关开始创建简单的 Spring Boot 应用程序的详细信息,请参阅 https://start.spring.io/ 中的 Spring Initializr。
有关如何将自定义 Docker 映像与 Azure 配合使用的其他示例,请参阅 对 Linux 上的 Azure Web 应用使用自定义 Docker 映像。