Image Builder のイメージコンポーネントおよびテンプレートで使用する YAML および Dockerfile コマンドの構文と使用方法を説明します。
コマンド構文
Image Builder は、YAML (Linux および Windows) と Dockerfile (Linux のみ) の 2 つのコマンド形式をサポートしています。
Dockerfile コマンドは柔軟性が低く、Linux でのみ使用できます。可能な場合は、YAML 形式を使用することを推奨します。
YAML 形式と Dockerfile 形式では、次の構文を使用します:
-
YAML:
ParametersセクションとTasksセクションを定義します:Parameters: # オプション。カスタムパラメーターを定義します。 param1: # 必須。パラメーター名。 Type: String # 必須。パラメーターのタイプ。有効な値:String、Number、Boolean。 DefaultValue: defaultValue # オプション。パラメーターのデフォルト値。デフォルト値を指定しない場合、イメージテンプレートでイメージコンポーネントを使用する際に値を明示的に渡す必要があります。 Tasks: # 必須。イメージコンポーネントのタスクのリストを定義します。タスクは順番に実行されます。少なくとも 1 つのタスクを含める必要があります。 - Name: taskName1 # 必須。タスク名。 Action: RunShellCommand # 必須。タスクのアクション。詳細については、YAML 形式のコンポーネントコマンドをご参照ください。 Properties: # アクションのプロパティ。指定したアクションによって、使用できるプロパティが異なります。 commandContent: echo {{ param1 }} # カスタムパラメーターを参照します。 - Name: taskName2 Action: action2 Properties: action2Property1: {{ taskName1.stdout }} # taskName1 の出力を参照します。説明タスクのプロパティでは、他のタスクの標準出力を次のように参照します:
{{taskName1.stdout}} -
Dockerfile
-
各行には 1 つのコマンドを記述します。
-
コマンドは複数行にまたがることができます。コマンドを次の行に続けるには、各行の末尾にバックスラッシュ (\) を追加します。
-
サポートされるコマンド
Image Builder は、コンポーネントとテンプレートで次のコマンドをサポートしています。
コンポーネント コマンド
YAML 形式
|
コマンド |
構文 |
説明 |
出力 |
|
RunShellCommand |
|
|
|
|
RunPowerShellCommand |
|
|
|
|
InvokeCommand |
|
共通コマンドを実行します。 |
|
|
OSSDownload |
|
|
なし |
|
OSSUpload |
|
|
|
|
WebDownload |
|
Web URL からファイルをダウンロードします。 |
|
|
Reboot |
|
インスタンスを再起動します。 |
Dockerfile 形式
|
コマンド |
構文 |
説明 |
|
RESTART |
|
|
|
RUN |
|
|
|
ENV |
|
説明
|
|
WORKDIR |
|
作業ディレクトリを設定します。 |
|
COPY |
|
ファイルをコピーします。 説明
ネットワークファイルは |
|
USER |
|
後続の 説明
|
|
LABEL |
|
|
|
CMD |
|
起動時に実行するコマンドを指定します。 |
|
ENTRYPOINT |
|
起動時に実行するコマンドを指定します。 説明
|
テンプレート コマンド
|
コマンド |
構文 |
説明 |
|
COMPONENT |
|
システムまたはカスタムのイメージコンポーネントを指定します。
|
|
RESTART |
|
|
|
RUN |
|
|
|
ENV |
|
説明
|
|
WORKDIR |
|
|
|
COPY |
|
説明
ネットワークファイルは |
|
USER |
|
説明
|
|
LABEL |
|
|
|
CMD |
|
|
|
ENTRYPOINT |
|
説明
|
コマンドの例
次の例では、一般的なユースケースにおけるコンポーネントコマンドとテンプレートコマンドを示します。
コンポーネント コマンド
例 1:カスタムパラメーターの使用
このコンポーネントは、カスタムパラメーター x、y、z を使用して (3x+2y+z)+(3x+2y+z) を計算します。対応するテンプレートコマンドについては、「例 1:テンプレートにコンポーネントを関連付け、カスタムパラメーターに値を割り当てる」をご参照ください。
Parameters:
x:
Type: String
y:
Type: String
z:
Type: String
Tasks:
- Name: count
Action: RunShellCommand
Properties:
commandContent: echo $((3 * {{x}} + 2 * {{y}} + {{z}}))
- Name: result
Action: RunShellCommand
Properties:
commandContent: echo $(({{count.stdout}}+{{count.stdout}}))
例 2:OSS のスクリプトの設定
OSS 内の Linux スクリプトからイメージを作成し、同一構成の Elastic Compute Service (ECS) インスタンスを作成します。OSSUpload アクションと OSSUpload アクションにより、AccessKey ペアをハードコードする必要がなくなります。
Tasks:
- Name: ossdownload
Action: OSSDownload
Properties:
bucketName: <your_oss_bucket_name>
destinationDir: /home
objectName: <your_script_object_name>
- Name: setpermissions
Action: RunShellCommand
Properties:
commandContent: sudo chmod +x /home/<your_script_object_name>
- Name: createfile
Action: RunShellCommand
Properties:
commandContent: sudo touch /home/output.txt
- Name: setfilepermissions
Action: RunShellCommand
Properties:
commandContent: sudo chmod 666 /home/output.txt
- Name: result
Action: RunShellCommand
Properties:
commandContent: sudo bash /home/<your_script_object_name> &> /home/output.txt
- Name: ossupload
Action: OSSUpload
Properties:
bucketName: <your_oss_bucket_name>
fileToUpload: /home/output.txt
objectName: output.txt
テンプレート コマンド
例 1:コンポーネントの関連付けとパラメーターの割り当て
「例 1:コンポーネントでカスタムパラメーターを使用」で示した x、y、z パラメーターに値を割り当てます。
COMPONENT ic-xxxxxxxxxxxxxxxxx --x 1 --y 2 --z 3
例 2:最新のコンポーネントバージョンの使用
コンポーネントにバージョン 1.0.1、1.0.2、および 1.0.3 がある場合、1.0.* を指定すると、一致する最新バージョン (1.0.3) が使用されます。
COMPONENT acs:ecs:cn-hangzhou:<alibaba_cloud_account_id>:imagecomponent/<your_component_name>/1.0.*