

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 自定义构建映像
<a name="custom-build-image"></a>

您可以使用自定义构建映像，为 Amplify 应用程序提供自定义的构建环境。如果您在使用 Amplify 的默认容器进行构建期间需要花很长时间来安装特定的依赖项，则可以创建自己的 Docker 映像并在构建期间引用该映像。映像可以在公有 Amazon Elastic Container Registry 上托管。

要使自定义构建映像作为 Amplify 构建映像使用，它必须满足以下要求。

**自定义构建映像要求**

1. 支持 GNU C 库 (glibc) 的 Linux 发行版，例如 Amazon Linux，专为 x86-64 架构编译。

1.  **cURL**：当我们启动您的自定义映像时，我们会将构建运行程序下载到您的容器中，因此我们需要有 cURL。如果缺少此依赖项，则构建将立即失败而没有任何输出，因为我们的构建运行程序无法生成任何输出。

1.  **Git**：为了克隆您的 Git 存储库，我们要求在映像中安装 Git。如果缺少此依赖项，**克隆存储库**步骤将会失败。

1.  **OpenSSH**：为了安全地克隆您的存储库，我们要求 OpenSSH 在构建期间临时设置 SSH 密钥。OpenSSH 包提供了构建运行程序执行此操作所需的命令。

1.  **Bash 和 Bourne Shell**：这两个实用程序用于在构建时运行命令。如果未安装它们，您的构建可能会在开始之前失败。

1.  **Node.JS\+NPM**：我们的构建运行程序未安装 Node。相反，它依赖于安装在映象中的 Node 和 NPM。只有需要 NPM 程序包或节点特定命令的构建才需要这样做。但是，我们强烈建议安装它们，因为当它们存在时，Amplify 构建运行程序可以使用这些工具来改善构建执行。当您为 Hugo 设置覆盖时，Amplify 的包覆盖功能使用 NPM 来安装 Hugo 扩展包。

以下包不是必需的，但我们强烈建议您创建它。

1. **NVM (Node Version Manager)**：如果您需要处理不同版本的 Node，我们建议您安装此版本管理器。当您设置覆盖时，Amplify 的软件包覆盖功能会使用 NVM 在每次构建之前更改 Node.js 版本。

1. **Wget**：Amplify 可以在构建过程中使用 Wget 实用程序下载文件。我们建议您将其安装在您的自定义图像中。

1. **Tar**：Amplify 可以在构建过程中使用 Tar 实用程序解压缩下载的文件。我们建议您将其安装在您的自定义图像中。

## 为应用程序配置自定义构建映像
<a name="configuring-a-custom-build-image"></a>

使用以下步骤，在 Amplify 控制台中为应用程序配置自定义构建映像。

**配置托管在 Amazon ECR 中的自定义构建映像**

1. 要使用 Docker 映像设置 Amazon ECR Public 存储库，请参阅 *Amazon ECR Public 用户指南*中的[入门](https://docs.aws.amazon.com/AmazonECR/latest/public/public-getting-started.html)。

1. 登录 AWS 管理控制台 并打开 [Amplify](https://console.aws.amazon.com/amplify/) 控制台。

1. 选择要为其配置自定义构建映像的应用程序。

1. 在导航窗格中，依次选择**托管**和**构建设置**。

1. 在**构建设置**页面上，请在**构建映像设置**中选择**编辑**。

1. 在**编辑构建映像设置**页面中，展开**构建映像**菜单，然后选择**自定义构建映像**。

1. 输入您在第一步中创建的 Amazon ECR Public 存储库的名称。这就是您的构建映像的托管位置。例如，如果您的存储库的名称为 *ecr-examplerepo*，您可以输入 **public.ecr.aws/xxxxxxxx/ecr-examplerepo**。

1. 选择**保存**。

## 在构建映像中使用特定程序包和依赖项版本
<a name="setup-live-updates"></a>

利用实时程序包更新，您可以指定程序包版本和依赖项以便在 Amplify 的默认构建映像中使用。默认构建映像附带了几个预安装的程序包和依赖项（例如 Hugo、Amplify CLI、Yarn 等）。利用实时程序包更新，您可以覆盖这些依赖项的版本并指定特定版本，或者始终确保安装了最新版本。

如果启用了实时程序包更新，则在运行构建之前，构建运行程序会首先更新（或降级）指定的依赖项。这将与更新依赖项所花费的时间成比例增加构建时间，但好处是可以确保使用相同版本的依赖项来构建您的应用程序。

**警告**  
将 Node.js 版本设置为**最新**会导致构建失败。相反，您必须指定确切的 Node.js 版本，例如 `18`、`21.5` 或 `v0.1.2`。

**配置实时软件包更新**

1. 登录 AWS 管理控制台 并打开 [Amplify](https://console.aws.amazon.com/amplify/) 控制台。

1. 选择要为其配置实时软件包更新的应用程序。

1. 在导航窗格中，依次选择**托管**和**构建设置**。

1. 在**构建设置**页面上，请在**构建映像设置**中选择**编辑**。

1. 在**编辑构建映像设置**页面的**实时程序包更新**列表中，选择**新增**。

1. 对于**程序包**，选择要覆盖的依赖项。

1. 对于**版本**，要么保留默认**最新**版本，要么输入依赖项的特定版本。如果使用**最新**，依赖项将始终升级到可用的最新版本。

1. 选择**保存**。