镜像构建服务通过镜像模板实现对镜像内容的定制,镜像模板可以通过指定镜像组件或直接指定命令来创建,镜像组件本质是由一条或多条命令构成,因此最小单元是命令。本文提供了镜像构建服务的常用命令格式和示例供您参考。
命令语法说明
镜像构建服务支持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