可以使用 gradle 来保存 gzip winder Win7 吗?
Possible to Use gradle to save gzip winder Win7?
我有一个设置-
带有 docker.exe 文件的本地 PC(未安装 docker)
远程服务器 运行 docker 守护进程 + 回购。
我正在使用 gradle 任务将图像保存到本地 PC:
project.exec{ ExecSpec exe->
{
exe.commandLine “{docker exe path}”
exe.args “save”, “-o”, “{tag}”, “{output path}”
}
有效并在 PC 上保存一个 .tar。
现在我试图保存用 gz/bz/xz 压缩的图像,但无论我如何安排 args,这都不起作用。
现在,如果我尝试通过 cmd 进行操作,它会起作用:
“{docker exe路径}保存{tag} | gzip > {输出路径}”
是否可以使用 gradle 来做到这一点?谁能帮帮我。
使用 Win 7,docker.exe 版本 18.09.2,gradle 版本 5.4.1
非常感谢
你不能使用像重定向运算符 >
这样的 shell 结构,因为 Gradle 不会将命令委托给 shell.
如果您愿意,可以使用 bmuschko's docker plugin,因为它支持压缩保存图像。这是一个如何使用它的例子(在 Groovy DSL 中):
plugins {
id "com.bmuschko.docker-remote-api" version "5.0.0"
}
import com.bmuschko.gradle.docker.tasks.image.*
task saveDockerImage(type: DockerSaveImage) {
destFile = layout.buildDirectory.file("my-docker-image.tgz")
repository = "my/image"
tag = "latest"
useCompression = true
}
这种方法的优点是使用起来相对简单,并且可以在 Windows 和 Unix 平台上工作,如果您工作,甚至不需要在本地安装 docker在远程存储库上。
但是如果你不想使用第三方插件,你必须将图像保存为 tar 文件(因为 docker save
就是这样做的)然后运行 另一个 exec
压缩它的命令(或使用您喜欢使用的任何其他压缩工具)。
您还可以创建执行所有这些操作的 bat 或 bash 脚本,然后从 Gradle 执行该脚本。但这也不像使用插件恕我直言那样优雅。
我有一个设置- 带有 docker.exe 文件的本地 PC(未安装 docker) 远程服务器 运行 docker 守护进程 + 回购。
我正在使用 gradle 任务将图像保存到本地 PC:
project.exec{ ExecSpec exe->
{
exe.commandLine “{docker exe path}”
exe.args “save”, “-o”, “{tag}”, “{output path}”
}
有效并在 PC 上保存一个 .tar。 现在我试图保存用 gz/bz/xz 压缩的图像,但无论我如何安排 args,这都不起作用。 现在,如果我尝试通过 cmd 进行操作,它会起作用: “{docker exe路径}保存{tag} | gzip > {输出路径}” 是否可以使用 gradle 来做到这一点?谁能帮帮我。
使用 Win 7,docker.exe 版本 18.09.2,gradle 版本 5.4.1 非常感谢
你不能使用像重定向运算符 >
这样的 shell 结构,因为 Gradle 不会将命令委托给 shell.
如果您愿意,可以使用 bmuschko's docker plugin,因为它支持压缩保存图像。这是一个如何使用它的例子(在 Groovy DSL 中):
plugins {
id "com.bmuschko.docker-remote-api" version "5.0.0"
}
import com.bmuschko.gradle.docker.tasks.image.*
task saveDockerImage(type: DockerSaveImage) {
destFile = layout.buildDirectory.file("my-docker-image.tgz")
repository = "my/image"
tag = "latest"
useCompression = true
}
这种方法的优点是使用起来相对简单,并且可以在 Windows 和 Unix 平台上工作,如果您工作,甚至不需要在本地安装 docker在远程存储库上。
但是如果你不想使用第三方插件,你必须将图像保存为 tar 文件(因为 docker save
就是这样做的)然后运行 另一个 exec
压缩它的命令(或使用您喜欢使用的任何其他压缩工具)。
您还可以创建执行所有这些操作的 bat 或 bash 脚本,然后从 Gradle 执行该脚本。但这也不像使用插件恕我直言那样优雅。