本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
自訂建置映像
您可以使用自訂建置映像,為 Amplify 應用程式提供自訂建置環境。如果您有特定的相依性,在使用 Amplify 預設容器的建置期間需要很長時間才能安裝,則可以建立自己的 Docker 映像,並在建置期間參考它。映像可以託管在 Amazon Elastic Container Registry Public 上。
若要讓自訂建置映像可用作 Amplify 建置映像,必須符合下列需求。
自訂建置映像需求
-
支援 GNU C Library (glibc) 的 Linux 發行版本,例如為 x86-64 架構編譯的 Amazon Linux。
-
c URL:當我們啟動自訂映像時,我們會將建置執行器下載到您的容器,因此我們需要 cURL 存在。如果缺少此相依性,則建置會立即失敗而沒有任何輸出,因為我們的建置執行器無法產生任何輸出。
-
Git:該影像上需安裝 Git,才能複製 Git 儲存庫。如果缺少此相依性,複製儲存庫步驟將會失敗。
-
開啟 SSH:為了安全地複製您的儲存庫,我們需要開啟SSH,以在建置期間暫時設定SSH金鑰。OpenSSH 套件提供建置執行器執行此操作所需的命令。
-
Bash 和 Bourne Shell :這兩個公用程式用於在建置時執行命令。如果未安裝,您的建置可能會在啟動之前失敗。
-
Node.JS+NPM:我們的建置執行器不會安裝 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
-
請參閱 Amazon ECR Public 使用者指南中的入門,以使用 Docker 映像設定 Amazon ECR Public 儲存庫。
-
登入 AWS Management Console 並開啟 Amplify 主控台
。 -
選擇您要設定自訂建置映像的應用程式。
-
在導覽窗格中,選擇託管 、建置設定 。
-
在建置設定頁面上的建置映像設定區段中,選擇編輯 。
-
在編輯建置映像設定頁面上,展開建置映像功能表,然後選擇自訂建置映像。
-
輸入您在步驟 1 中建立的 Amazon ECR Public 儲存庫名稱。這是您建置映像的託管位置。例如,如果您的儲存庫名稱是 ecr-examplerepo ,則輸入
public.ecr.aws/xxxxxxxx/ecr-examplerepo
。 -
選擇 Save (儲存)。
在建置映像中使用特定套件和相依性版本
即時套件更新可讓您指定要在 Amplify 預設建置映像中使用的套件和相依性版本。預設建置映像隨附預先安裝的數個套件和相依性 (例如 Hugo、Amplify CLI、Yarn 等)。透過即時套件更新,您可以覆寫這些相依性的版本,並指定特定版本,或確保始終安裝最新版本。
如果啟用即時套件更新,則在建置執行之前,建置執行器會先更新 (或降級) 指定的相依性。這會根據更新相依性所需的時間來增加建置時間,但好處是您可以確保使用相同版本的相依性來建置應用程式。
警告
將 Node.js 版本設定為最新會導致建置失敗。您必須指定確切的 Node.js 版本,例如 18
、 21.5
或 v0.1.2
。
若要設定即時套件更新
-
登入 AWS Management Console 並開啟 Amplify 主控台
。 -
選擇您要設定即時套件更新的應用程式。
-
在導覽窗格中,選擇託管 、建置設定 。
-
在建置設定頁面上的建置映像設定區段中,選擇編輯 。
-
在編輯建置映像設定頁面上,即時套件更新清單,選擇新增 。
-
對於套件 ,選取要覆寫的相依性。
-
對於版本 ,請保持預設最新狀態或輸入相依性的特定版本。如果您使用最新的 ,相依性將一律升級至可用的最新版本。
-
選擇 Save (儲存)。