【发布时间】:2020-11-22 04:33:13
【问题描述】:
我已经容器化了一个在 .net 框架 4.8 上运行的简单 Windows 服务。使用这个 dockerfile,应用程序和容器都可以在本地构建和运行:
FROM ourcontainerregistry.azurecr.io/net-framework-base:latest
WORKDIR /app
RUN cmd MSBuild.exe /property:Configuration=Release
COPY TopShelfServiceInstaller/bin/Release/ .
ENTRYPOINT ["TopShelfServiceInstaller.exe"]
当我在 docker 桌面本地连接到容器时,我在 C:/app 目录中看到了我期望的文件,并且可以确认服务正在按预期运行。
但是,当我尝试使用 Windows 最新的构建代理在 Azure Devops 的管道中运行此 dockerfile 时,我在 COPY 步骤中不断收到以下错误:
COPY failed: CreateFile \\?\C:\ProgramData\docker\tmp\docker-builder002424695\TopShelfServiceInstaller\bin\Release: The system cannot find the path specified.
任何想法为什么会发生这种情况以及我该如何解决?
编辑:用于构建的 azure-pipelines.yml:
resources:
repositories:
- repository: net-framework-base
type: git
name: Container_DotNetFrameworkBase
containers:
- container: net-framework-base
type: ACR
azureSubscription: ---
resourceGroup: ---
registry: ---
repository: net-framework-base
variables:
- name: dockerRegistryServiceConnection
value: ---
- name: imageRepository
value: "service"
- name: containerRegistry
value: ---
- name: prod-container-registry
value: ---
- name: dockerfilePath
value: "$(Build.SourcesDirectory)/Service/dockerfile"
- name: tag
value: "$(Build.BuildNumber)"
- name: vmImageName
value: "windows-latest"
trigger:
batch: true
branches:
include:
- feature/*
#pr:
stages:
- stage: container
displayName: New Docker Build
dependsOn: []
jobs:
- job: container
displayName: build container
pool:
vmImage: $(vmImageName)
steps:
- checkout: self
fetchDepth: 1
- checkout: net-framework-base
fetchDepth: 1
# this is the task that's failing
- task: Docker@2
displayName: build container
inputs:
containerRegistry: $(prod-container-registry)
repository: $(imageRepository)
command: "build"
Dockerfile: $(dockerfilePath)
tags: |
$(tag)
【问题讨论】:
-
我不认为
COPY命令做你认为它做的事。COPY将文件从主机文件系统复制到容器中。
标签: .net docker azure-devops dockerfile topshelf