Dockerfile:复制 zip 并打开它

yar*_*nkl 6 containers unzip docker dockerfile

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

  1. 准备文件 Dockerfile. 包含以下几行:

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

    复制 image.zip c:\image.zip

    CMD [“powershell.exe”,“Expand-Archive -LiteralPath 'C:\image.zip' -DestinationPath 'c:\'”

  2. 准备一个名为 image.zip 的 zip 文件,其中包含一些文件。

  3. 运行命令:

    docker build -t test3 。

  4. 至此,图像就构建完成了。image.zip 已复制到图像中。

  5. 运行容器:

    docker run --rm -it test3 powershell
    
    Run Code Online (Sandbox Code Playgroud)
  6. 从容器 powershell 运行:

    dir
    
    Run Code Online (Sandbox Code Playgroud)

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

yar*_*nkl 7

找到了一种方法,使用 .tar 文件代替 .zip 并使用“ADD”而不是“COPY”:

DOCKERFILE。现在看起来像这样:

FROM mcr.microsoft.com/windows/servercore:ltsc2019
ADD test3.tar c:/
Run Code Online (Sandbox Code Playgroud)

ADD 命令提取存档。


小智 5

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

我建议执行以下操作:

  1. 将 zip 文件从源手动复制到包含以下内容的工作目录Dockerfile
  2. 使用ADD指令将 zip 文件从源复制到目标
  3. 解压 zip 文件的用户RUN指令。ADD喜欢:
ADD <file_name.zip> /<destination> 
RUN unzip <file_name.zip>
Run Code Online (Sandbox Code Playgroud)
  1. 之后继续写下你的Dockerfile说明。