Docker Windows 容器内的 VSTS CLI

VSTS CLI inside a Docker Windows container

Microsoft 已经为 VSTS CLI 创建了一个容器。它存在于 docker.hub 的 microsoft/vsts-agent。不幸的是,它只有一个 lynx 容器,所以我正在尝试构建一个 Windows VSTS CLI 的容器。这是显示如何安装它的 Microsoft 页面:

https://docs.microsoft.com/en-us/cli/vsts/install?view=vsts-cli-latest

johnstep 展示了如何安装 MSI 文件 https://github.com/moby/moby/issues/30395.

所以使用以上信息我尝试了这个 Docker 文件:

FROM microsoft/windowsservercore

ADD https://aka.ms/vsts-cli-windows-installer .

RUN vsts-cli-0.1.0b1.msi

# Setup Powershell
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

这导致此错误消息:

Sending build context to Docker daemon   64.1MB
Step 1/4 : FROM microsoft/windowsservercore
 ---> 4dba31379dad
Step 2/4 : ADD https://aka.ms/vsts-cli-windows-installer .
Downloading [==================================================>]  60.75MB/
 ---> Using cache
 ---> 6a606c72348f
Step 3/4 : RUN vsts-cli-0.1.0b1.msi
 ---> Running in fef0829916b4
**'vsts-cli-0.1.0b1.msi' is not recognized as an internal or external command
operable program or batch file.**
The command 'cmd /S /C vsts-cli-0.1.0b1.msi' returned a non-zero code: 1

我不确定 Docker 文件有什么问题。可能是 MSI 文件有问题。我 运行 Docker 在 Windows 服务器 2016 上安装了 Windows 服务器核心。

这是因为Docker引擎会创建一个名为vsts-cli-windows-installer的文件夹,并将下载的文件放入其中。已记录 here

相反,修改您的 DOCKERFILE 如下:

ADD https://aka.ms/vsts-cli-windows-installer/ a.msi RUN a.msi