azure-devops - 如何将 azure 管道工件复制到作为 microsoft dotnetcore 运行时映像的 docker 映像
问题描述
我正在为 dotnet 核心项目构建 Azure DevOps 管道。在 dotnet publish 命令执行后,工件将保存在 $(artifactStagingDirectory) 中。如何将这些工件从暂存目录复制到 docker 映像?
我没有在 dockerfile 中构建项目。我正在管道中执行 dotnet publish。
我尝试使用以下方法将工件保存到另一个文件夹:
dotnet publish --configuration $(BuildConfiguration) --output out
解决方案
发布到 $(Build.ArtifactStagingDirectory) 很好。有几种方法可以做到这一点,所以这里有一个:
- 发布后添加一个 Docker 任务,配置为“构建”
- 将任务中的“构建上下文”设置为 $(Build.ArtifactStagingDirectory)。这是 Docker 将用于 Dockerfile 中的 COPY 等命令的根路径。
- 将 Dockerfile 提交到您的 repo,并在任务中设置 Dockerfile 路径以匹配其位置
像这样设置 Dockerfile(我在这里假设 .NET Core 2.2):
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "myAppNameHere.dll"]
因为您已将 Docker 构建上下文设置为 $(Build.ArtifactStagingDirectory),您的应用程序已在其中发布,所以 COPY 命令将使用它作为“当前工作目录”。COPY 的翻译是“将 $(Build.ArtifactStagingDirectory) 中的所有内容复制到容器内的 /app 文件夹中”。
这将为您提供一个基本的 Docker 容器,其中仅包含您预先构建和发布的应用程序文件。
推荐阅读
- r - 如何使用“lapply”获得“干净”列表?
- javascript - 在本机反应中下载音频文件?
- firebase - 无法将自定义域添加到 Firebase
- python - Python:如何编写一个函数来打印'height'行,每行都有'sym'重复'length'次?
- python - 读取多个txt文件python
- vue.js - 使用没有角度的清晰设计日期选择器
- python - Python - Tkinter.Listbox <
> 不工作 - swift - 当我使用可可豆荚在物理设备上运行应用程序时崩溃
- ios - 我是否需要在 Apple 上使用订阅或消耗性 IAP
- javascript - 浏览对象数组并删除对象