docker - 获取Build.Repository.LocalPath的数据并在我的DockerFile中使用它

标签 docker azure-devops devops azure-pipelines

我想从变量Build.Repository.LocalPath获取数据并在我的Dockerfile中使用它,但是它显示了我和错误。

这是我的dockerfile:

FROM microsoft/aspnet:latest

COPY "/${Build.Repository.LocalPath}/NH.Services.WebApi/bin/Release/Publish/" /inetpub/wwwroot

我收到此错误:
Step 2/9 : COPY "/${Build.Repository.LocalPath}/NH.Services.WebApi/bin/Release/Publish/" /inetpub/wwwroot
failed to process "\"/${Build.Repository.LocalPath}/NH.Services.WebApi/bin/Release/Publish/\"": missing ':' in substitution
##[error]C:\Program Files\Docker\docker.exe failed with return code: 1

我尝试了很多方法,将这一行:
COPY "/${Build.Repository.LocalPath}/NH.Services.WebApi/bin/Release/Publish/" /inetpub/wwwroot

最佳答案

您可以在Dockerfile中添加一个参数:

ARG path

在Azure DevOps Docker任务中添加一个参数:
-task: Docker@2
 inputs:
   command: build
   arguments: --build-arg path=$(Build.Repository.LocalPath)

现在,Dockerfile知道了变量值,您可以使用它,例如:
FROM ubuntu:latest
ARG path
ECHO $path

结果:
Step 3/13 : RUN echo $path
---> Running in 213dsa3dacv
/home/vsts/work/1/s

但是,如果您尝试以这种方式复制应用程序:
FROM microsoft/aspnet:latest
ARG path
COPY $path/README.md /inetpub/wwwroot

您将得到一个错误:

COPY faild: CreateFile \?\C:\ProgramData\docker\tmp\docker-builder437597591\_work\1\s\README.md: The system cannot find the path specified.



这是因为Docker在一个临时文件夹中构建镜像,然后将源复制到该文件夹​​中,但是他没有复制代理文件夹(_work / 1 / s),因此最好的方法是在Dockerfile所在的位置放置一个相对路径,例如(如果Dockerfile与README.md存在):
FROM microsoft/aspnet:latest
COPY README.md /inetpub/wwwroot

关于docker - 获取Build.Repository.LocalPath的数据并在我的DockerFile中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56306821/

相关文章:

amazon-web-services - AWS CloudFormation - 将参数( key 对)从 Azure DevOps 添加到 json

docker - 错误 : Failed to download metadata for repo 'appstream' : Cannot prepare internal mirrorlist: No URLs in mirrorlist

docker - 如何查看docker容器使用的核心数?

docker - 如何在本地主机上获取 docker 镜像的图层

Azure Board 应用程序与 MS 团队集成 - 当我添加 Azure 应用程序时,回顾板在 MS Teams 中不可见

python - 如何使用 Poetry 发布到 Azure Devops PyPI 源?

node.js - elastic beanstalk 中的多个 Nodejs 应用程序

loops - Nginx - 在 proxy_pass 中添加变量时无限重新加载

java - Docker compose 以状态 1 退出,spring boot 在日志中启动并立即结束,但无法识别故障原因

asp.net-mvc - Visual Studio Online 网站以 Debug模式部署到 Azure