Dockerfile:复制zip并打开它

Dockerfile:复制zip并打开它,docker,dockerfile,containers,unzip,Docker,Dockerfile,Containers,Unzip,我正在尝试构建一个Windows docker映像,它会将我的软件复制到映像并解压缩。 我正在Windows 10主机上工作。 这些步骤是: 准备文件Dockerfile。使用以下行: 来自mcr.microsoft.com/windows/servercore:ltsc2019 复制image.zip c:\image.zip CMD[“powershell.exe”,“展开归档文件-LiteralPath'C:\image.zip'-DestinationPath'C:\” 准备一个名为i

我正在尝试构建一个Windows docker映像,它会将我的软件复制到映像并解压缩。 我正在Windows 10主机上工作。 这些步骤是:

  • 准备文件Dockerfile。使用以下行:

    来自mcr.microsoft.com/windows/servercore:ltsc2019

    复制image.zip c:\image.zip

    CMD[“powershell.exe”,“展开归档文件-LiteralPath'C:\image.zip'-DestinationPath'C:\”

  • 准备一个名为image.zip的zip文件和一些文件

  • 运行命令:

    docker构建-t test3

  • 此时图像已生成。image.zip已复制到图像中

  • 运行容器:

    docker run --rm -it test3 powershell
    
  • 从容器powershell运行:

    dir
    

  • 此时,我希望看到在构建过程中提取的“image.zip”的内容。但我没有看到,只有“image.zip”。

    找到了一种方法,使用.zip的.tar文件插入并使用“添加”而不是“复制”:

    DOCKERFILE。现在看起来像这样:

    FROM mcr.microsoft.com/windows/servercore:ltsc2019
    ADD test3.tar c:/
    

    ADD命令提取存档。

    确实如此,ADD指令提取存档文件,但不是所有格式。例如,
    ADD
    COPY
    指令不支持提取
    .zip
    文件,但支持提取
    .tar
    文件等

    我建议采取以下措施:

  • 将zip文件从其源手动复制到包含
    Dockerfile
  • 使用
    ADD
    指令将zip文件从源复制到目标
  • 用户在
    添加
    指令后运行指令以提取zip文件。 比如:
  • ADD/
    运行解压
    
  • 然后继续编写
    Dockerfile
    说明

  • 您在
    docker run
    命令行上提供的命令将运行,而不是图像的
    CMD
    。您的意思是
    run
    命令来提取归档文件吗?不,我希望在构建过程中解压文件,而不是在运行过程中。我想这就是我试图了解的:如何在构建过程中解压文件s使用DOCKERFILE。
    RUN
    确实作为生成的一部分运行;
    CMD
    指定启动容器时应运行的命令。另请参阅。
    ADD <file_name.zip> /<destination> 
    RUN unzip <file_name.zip>