通過SAE控制台使用容器鏡像或程式碼封裝方式部署應用時,SAE會根據預設的啟動參數來啟動容器。如果需要在容器啟動執行特殊配置(例如Nginx)或不採用預設的啟動參數,您可以通過SAE自訂容器的啟動命令,以實現特殊配置或覆蓋鏡像的啟動預設參數。
功能入口
情境不同,操作入口也有所差異:
建立應用
登入SAE控制台,在左側導覽列選擇應用管理 > 應用列表,然後選擇目標地區和目標命名空間,最後單擊创建应用。
在应用基本信息嚮導頁面進行配置後,單擊下一步:高级设置。
對正在啟動並執行應用進行變更
重新部署應用後,該應用將會被重啟。為避免業務中斷等不可預知的錯誤,請在業務低峰期執行部署操作。
登入SAE控制台,在左側導覽列選擇應用管理 > 應用列表,然後選擇目標地區和目標命名空間,最後單擊目標應用程式名稱。
在目標應用的基础信息頁面,單擊部署应用。
對已停止的應用進行變更
登入SAE控制台,在左側導覽列選擇應用管理 > 應用列表,然後選擇目標地區和目標命名空間,最後單擊目標應用程式名稱。
在目標應用的基础信息頁面,單擊修改應用配置。
設定應用的啟動命令
通過鏡像部署的應用
通常情況下,您無需在此處配置啟動命令。在製作鏡像時,容器的啟動命令已經配置在Dockerfile檔案中的ENTRYPOINT或CMD。
例如,Dockerfile中設定的以下命令,在容器啟動時將被執行。
ENTRYPOINT [nginx, '-g', 'daemon off;'] 如果需要覆蓋Dockerfile中配置的啟動命令,配置步驟如下:
在啟動命名地區,選擇指令碼解譯器類型為>_ /bin/sh或>_ /bin/bash。需要確保鏡像中已包含該指令碼解譯器。
配置容器的啟動命令。參考格式如下:
>_ /bin/sh
sh -c 'while true; do echo hello; sleep 10;done'>_ /bin/bash
bash -c 'while true; do echo hello; sleep 10;done'
如果您對原有Dockerfile鏡像的ENTRYPOINT和CMD配置內容不熟悉,請勿自訂或者修改啟動命令和啟動參數,錯誤的啟動命令將導致應用建立失敗。
通過JAR包部署的應用
Java應用啟動和運行時需要定義啟動命令和參數,如Java的JVM參數、GC策略等。
SAE將上傳的JAR包自動編譯為鏡像,且以容器方式運行應用。在編譯過程中,SAE會內建啟動命令和參數,並指定JAR包的存放路徑。您可以登入SAE控制台修改JAR包預設的啟動命令及命令參數。
在启动命令设置地區輸入相關配置項。啟動命令樣本如下。
系統預設啟動命令為 $JAVA_HOME/bin/java $Options -jar $CATALINA_OPTS "$package_path" $args。
配置項 | 說明 |
系统默认启动命令 | SAE預設的啟動命令。 |
options设置 | 配置JVM參數。關於參數詳情,請參見JVM參數配置說明、Tuning Java Virtual Machines和JVM Tuning: How to Prepare Your Environment for Performance Tuning。 如果您需要使用應用的遠端偵錯功能,請根據JDK版本配置所需命令。
參數說明如下。
重要 以WAR包、JAR包方式部署應用的啟動命令不同,請勿共用啟動命令。本樣本中的遠端偵錯命令,適用於以上兩種部署方式。 |
args设置 | 配置標準輸出和錯誤輸出的重新導向命令,例如 |
通過WAR包部署的應用
在启动命令设置地區輸入相關配置項。啟動命令樣本如下。
系統預設啟動命令為 CATALINA_OPTS="$CATALINA_OPTS $Options" catalina.sh run,其中 $Options 為可替換的 JVM 參數預留位置,對應下方 options設定 中填寫的內容。為避免 OOM,建議堆記憶體小於執行個體總記憶體並預留 1 GB 空間,詳情請參見 JVM 配置最佳實務。
配置項 | 說明 |
系统默认启动命令 | SAE預設的啟動命令。 |
options设置 | 配置JVM參數。關於參數詳情,請參見JVM參數配置說明、Tuning Java Virtual Machines和JVM Tuning: How to Prepare Your Environment for Performance Tuning。 如果您需要使用應用的遠端偵錯功能,請根據JDK版本配置所需命令。
參數說明如下。
重要 以WAR包、JAR包方式部署應用的啟動命令不同,請勿共用啟動命令。本樣本中的遠端偵錯命令,適用於以上兩種部署方式。 |
通過ZIP包部署的應用
在启动命令地區,選擇指令碼類型,然後配置容器的啟動命令。
>_ /bin/sh
sh -c 'gunicorn -w 3 -b 0.0.0.0:8080 app.hello:app'>_ /bin/bash
bash -c 'gunicorn -w 3 -b 0.0.0.0:8080 app.hello:app'