本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自定义构建映像
您可以使用自定义构建映像,为 Amplify 应用程序提供自定义的构建环境。如果您在使用 Amplify 的默认容器进行构建期间需要花很长时间来安装特定的依赖项,则可以创建自己的 Docker 映像并在构建期间引用该映像。映像可以在公有 Amazon Elastic Container Registry 上托管。
要使自定义构建映像作为 Amplify 构建映像使用,它必须满足以下要求。
自定义构建映像要求
-
支持 GNU C 库 (glibc) 的 Linux 发行版,例如 Amazon Linux,专为 x86-64 架构编译。
-
cURL:当我们启动您的自定义映像时,我们会将构建运行程序下载到您的容器中,因此我们需要有 cURL。如果缺少此依赖项,则构建将立即失败而没有任何输出,因为我们的构建运行程序无法生成任何输出。
-
Git:为了克隆您的 Git 存储库,我们要求在映像中安装 Git。如果缺少此依赖项,克隆存储库步骤将会失败。
-
OpenSSH:为了安全地克隆您的存储库,我们要求 OpenSSH 在构建期间临时设置 SSH 密钥。OpenSSH 包提供了构建运行程序执行此操作所需的命令。
-
Bash 和 Bourne Shell:这两个实用程序用于在构建时运行命令。如果未安装它们,您的构建可能会在开始之前失败。
-
Node.JS+NPM:我们的构建运行程序未安装 Node。相反,它依赖于安装在映象中的 Node 和 NPM。只有需要 NPM 程序包或节点特定命令的构建才需要这样做。但是,我们强烈建议安装它们,因为当它们存在时,Amplify 构建运行程序可以使用这些工具来改善构建执行。当您为 Hugo 设置覆盖时,Amplify 的包覆盖功能使用 NPM 来安装 Hugo 扩展包。
以下包不是必需的,但我们强烈建议您创建它。
-
NVM (Node Version Manager):如果您需要处理不同版本的 Node,我们建议您安装此版本管理器。当您设置覆盖时,Amplify 的软件包覆盖功能会使用 NVM 在每次构建之前更改 Node.js 版本。
-
Wget:Amplify 可以在构建过程中使用 Wget 实用程序下载文件。我们建议您将其安装在您的自定义图像中。
-
Tar:Amplify 可以在构建过程中使用 Tar 实用程序解压缩下载的文件。我们建议您将其安装在您的自定义图像中。
为应用程序配置自定义构建映像
使用以下步骤,在 Amplify 控制台中为应用程序配置自定义构建映像。
配置托管在 Amazon ECR 中的自定义构建映像
-
要使用 Docker 映像设置 Amazon ECR Public 存储库,请参阅 Amazon ECR Public 用户指南中的入门。
-
登录 AWS Management Console 并打开 Amplify 控制台
。 -
选择要为其配置自定义构建映像的应用程序。
-
在导航窗格中,依次选择托管和构建设置。
-
在构建设置页面上,请在构建映像设置中选择编辑。
-
在编辑构建映像设置页面中,展开构建映像菜单,然后选择自定义构建映像。
-
输入您在第一步中创建的 Amazon ECR Public 存储库的名称。这就是您的构建映像的托管位置。例如,如果您的存储库的名称为 ecr-examplerepo,您可以输入
public.ecr.aws/xxxxxxxx/ecr-examplerepo
。 -
选择保存。
在构建映像中使用特定程序包和依赖项版本
利用实时程序包更新,您可以指定程序包版本和依赖项以便在 Amplify 的默认构建映像中使用。默认构建映像附带了几个预安装的程序包和依赖项(例如 Hugo、Amplify CLI、Yarn 等)。利用实时程序包更新,您可以覆盖这些依赖项的版本并指定特定版本,或者始终确保安装了最新版本。
如果启用了实时程序包更新,则在运行构建之前,构建运行程序会首先更新(或降级)指定的依赖项。这将与更新依赖项所花费的时间成比例增加构建时间,但好处是可以确保使用相同版本的依赖项来构建您的应用程序。
警告
将 Node.js 版本设置为最新会导致构建失败。相反,您必须指定确切的 Node.js 版本,例如 18
、21.5
或 v0.1.2
。
配置实时软件包更新
-
登录 AWS Management Console 并打开 Amplify 控制台
。 -
选择要为其配置实时软件包更新的应用程序。
-
在导航窗格中,依次选择托管和构建设置。
-
在构建设置页面上,请在构建映像设置中选择编辑。
-
在编辑构建映像设置页面的实时程序包更新列表中,选择新增。
-
对于程序包,选择要覆盖的依赖项。
-
对于版本,要么保留默认最新版本,要么输入依赖项的特定版本。如果使用最新,依赖项将始终升级到可用的最新版本。
-
选择保存。