如何在PowerShell脚本中向Docker调用传递可选参数?
实现PowerShell脚本传递任意Docker构建参数
你可以利用PowerShell的ValueFromRemainingArguments参数特性,实现类似Python**kwargs的效果,直接把命令行里的额外参数传递给Docker命令,不用硬编码所有可能的选项。
修改脚本参数定义
在你的build_docker.ps1脚本开头,添加一个接收剩余参数的变量,示例如下:
param( # 你原本的必选参数 [Parameter(Mandatory=$true)] [string]$dockername, # 接收所有额外的Docker构建参数 [Parameter(ValueFromRemainingArguments)] [string[]]$DockerBuildArgs ) # 这里保留你原本的文件复制操作... # 调用docker build时,用@符号展开参数数组 docker build -t $dockername @DockerBuildArgs . # 这里保留你原本的后续清理操作...
使用方式
执行脚本时,先传入脚本自己的参数(比如-dockername),后面直接跟任意Docker build支持的参数即可:
powershell ./build_docker.ps1 -dockername test_docker --no-cache --pull --build-arg APP_VERSION=1.0
关键说明
[Parameter(ValueFromRemainingArguments)]会把命令行中未匹配到脚本定义参数的所有内容,打包成字符串数组传给$DockerBuildArgs- 调用
docker build时用@DockerBuildArgs(而非$DockerBuildArgs),是PowerShell的数组展开语法,能让数组里的每个元素作为独立命令行参数传递给Docker,和直接写在命令里效果完全一致 - 不管是无值的开关参数(比如
--no-cache)还是带值的参数(比如--build-arg KEY=VALUE),都能正常传递,无需额外处理
内容的提问来源于stack exchange,提问作者CutePoison
相关产品推荐
相关产品推荐

