首页 > 解决方案 > Dockerfile RUN powershell wget 并查看进度

问题描述

在我的 dockerfile 中,想要使用以下命令序列来下载并解压一个大的 zip 文件:

RUN powershell -Command                           \
    wget http://my_server/big_huge.zip            \
        -OutFile C:\big_huge.zip ;                \
    Expand-Archive -Path C:\big_huge.zip          \
                   -DestinationPath C:\big_huge ; \
    Remove-Item C:\big_huge.zip -Force

我不想使用 ADD 下载 zip 文件不会改变,我希望这一步被缓存。

我上面的内容似乎有效,但我没有像往常那样得到任何下载进度的指示。这是一个无赖,因为这是一个很大的下载。我想下载的进度是模糊的,因为Invoke-WebRequestwget是一个 cmdlet 的别名。有什么方法可以将 cmdlet 的输出通过管道传输到 stdout,以便在运行时看到它docker build

标签: powershelldockerdocker-for-windowscmdlets

解决方案


我放弃了尝试从 Dockerfile 进行下载,而是编写了一个单独的脚本来预下载我需要的文件并在文件不存在时扩展它们的档案。该脚本然后调用docker build,docker run等。在 Dockerfile 中,我正在复制展开档案的目录。


推荐阅读