鏡像構建服務通過鏡像模板實現對鏡像內容的定製,鏡像模板可以通過指定鏡像組件或直接指定命令來建立,鏡像組件本質是由一條或多條命令構成,因此最小單元是命令。本文提供了鏡像構建服務的常用命令格式和樣本供您參考。
命令文法說明
鏡像構建服務支援YAML(適用於Linux和Windows)和Dockerfile(僅適用於Linux)兩種格式的命令。
使用Dockerfile格式的命令不夠靈活且有作業系統限制,推薦您使用YAML格式。
YAML和Dockerfile兩種格式的文法要求如下:
YAML:需要定義
Parameters
和Tasks
,文法如下。Parameters: # 用於定義自訂參數,可選 param1: # 參數名,必填 Type: String # 參數類型,必填,String/Number/Boolean之一 DefaultValue: defaultValue #參數預設值,選填,當參數沒有預設值時,使用的組件的模板需要顯式傳入 Tasks: # 用於定義組件的工作清單,依次執行, 至少包含一個task - Name: taskName1 # 任務名稱,必填 Action: RunShellCommand # 任務的動作,必填,可以參考YAML格式組件命令集 Properties: # 動作參數,取決於具體選用的action commandContent: echo {{ param1 }} # 引用自訂參數 - Name: taskName2 Action: action2 Properties: action2Property1: {{ taskName1.stdout }} # 引用taskName1的輸出
說明您可以在Tasks欄位的屬性內引用上述定義的參數。引用的文法如下:
{{taskName1.stdout}}
Dockerfile
每行一條命令。
同一個命令允許設定多行,換行需要在前一行的末尾添加分行符號(\)。
鏡像構建服務支援的命令
鏡像構建服務在控制台和API分別建立組件時,組件支援的命令格式說明如下。
組件命令(控制台和API均支援)
(推薦)YAML格式
命令 | 命令格式或樣本 | 說明 | 輸出 |
RunShellCommand |
|
|
|
RunPowerShellCommand |
|
| |
InvokeCommand |
| 執行一條公用命令。 | |
OSSDownload |
|
| 無 |
OSSUpload |
|
| |
WebDownload |
| 從網路上下載檔案。 | |
Reboot |
| 重啟伺服器。 |
Dockerfile格式
命令 | 命令格式或樣本 | 說明 |
RESTART |
|
|
RUN |
|
|
ENV |
|
說明 使用 |
WORKDIR |
| 設定工作目錄。 |
COPY |
| 複製檔案。 說明 網路檔案統一使用 |
USER |
| 設定執行命令的使用者。 說明 變數 |
LABEL |
|
|
CMD |
| 開機自啟動。 |
ENTRYPOINT |
| 開機自啟動。 說明
|
模板命令(Dockerfile格式,僅API支援)
命令 | 命令格式或樣本 | 說明 |
COMPONENT |
| 指定鏡像組件,支援指定系統組件或您建立的自訂群組件。
|
RESTART |
|
|
RUN |
|
|
ENV |
|
說明 使用 |
WORKDIR |
|
|
COPY |
|
說明 網路檔案統一使用 |
USER |
|
說明 變數 |
LABEL |
|
|
CMD |
|
|
ENTRYPOINT |
|
說明
|
組件命令樣本
您在建立鏡像組件時可以選擇構建組件(Build)或測試組件(Test),可以直接拷貝如下樣本模板命令並根據實際業務情境進行修改。
構建組件(Build)用於自訂您的鏡像內容,只能在構建模板中使用。
測試組件(Test)用於測試您的鏡像是否符合預期,只能在測試模板中使用。
構建組件(Build)
Linux系統
Parameters:
message:
Type: String
DefaultValue: hello world
Tasks:
- Name: HelloWorld
Action: RunShellCommand
Properties:
commandContent: echo {{messgae}}
- Name: HelloWorldAgain
Action: RunShellCommand
Properties:
commandContent: echo {{HelloWorld.stdout}}
Windows系統
Parameters:
message:
Type: String
DefaultValue: hello world
Tasks:
- Name: HelloWorld
Action: RunPowerShellCommand
Properties:
commandContent: echo {{messgae}}
- Name: HelloWorldAgain
Action: RunPowerShellCommand
Properties:
commandContent: echo {{HelloWorld.stdout}}
測試組件(Test)
Linux系統
Parameters:
message:
Type: String
DefaultValue: hello world
Tasks:
- Name: HelloWorld
Action: RunShellCommand
Properties:
commandContent: echo {{messgae}}
- Name: HelloWorldAgain
Action: RunShellCommand
Properties:
commandContent: |-
echo {{HelloWorld.stdout}}
exit 0
Windows系統
Parameters:
message:
Type: String
DefaultValue: hello world
Tasks:
- Name: HelloWorld
Action: RunPowerShellCommand
Properties:
commandContent: echo {{messgae}}
- Name: HelloWorldAgain
Action: RunPowerShellCommand
Properties:
commandContent: |-
echo {{HelloWorld.stdout}}
exit 0