20240828 Cloud上Docker image架構不合問題

某天上班AWS ECS一直部署失敗,從部署下方事件那邊ref到失敗的任務點進去看,他說容器exit 1

我完美的image,在電腦上超work的啊(拖走) 溫馨提醒:不要常說「這在我電腦上能動」

開始旋轉腦袋:

  • 是Dockerfile因為分支不同導致變數不同連不到DB嗎?不是

  • 一開始還以為是因為image內來自官方的有高風險,後來水落石出發現,也不是欸

補充:常常有人說ECS健康檢查是指負載平衡健康檢查,多在檢查有無憑證、流量等問題,
並不會檢查image有無風險這個項目,另外就算部署時事件顯示unhealth,也還是能部署成功,看設定不健康的閥值吧

那就開始通靈吧(咦)

看了些參考資料,甚麼狀況會exit 1,像是:

  • Dockerfile一開始就是寫錯

  • image損毀

  • 處理器架構不同

  • 某些image仰賴某些發行版,但你疊錯了

然後我望向Windows公司電腦,我頓時充滿了靈感...囧...


解決辦法

Windows使用者若ECS任務描定ARM64架構,放下你手上的docker compose build

改用這個:

docker buildx build --platform linux/amd64,linux/arm64 -t 映像名稱 Dockerfile所在目錄

最後你就會得到一個ARM64的image ✧*。٩(ˊᗜˋ*)و✧*。

備註:某些電腦會出現這個提示

ERROR: Multi-platform build is not supported for the docker driver.
Switch to a different driver, or turn on the containerd image store, and try again.
Learn more at https://docs.docker.com/go/build-multi-platform/ 

就是說你的電腦--platform後方只能帶一個平台

Last Updated:
Contributors: Crystal