【发布时间】:2018-05-22 09:08:01
【问题描述】:
我有一个简单的开箱即用 VS2017 Web api,我正在尝试在 VSTS 上构建一个 Docker 映像并将该映像发布到 Azure 容器注册表。但它不起作用,错误如下:
2018-05-21T16:49:45.8481201Z Step 7/17 : COPY WebApi/WebApi.csproj WebApi/
2018-05-21T16:49:45.8503445Z COPY failed: stat /var/lib/docker/tmp/docker-builder936381234/WebApi/WebApi.csproj: no such file or directory
2018-05-21T16:49:45.8644972Z ##[error]COPY failed: stat /var/lib/docker/tmp/docker-builder936381234/WebApi/WebApi.csproj: no such file or directory
2018-05-21T16:49:45.8732546Z ##[error]/usr/local/bin/docker failed with return code: 1
它是一个标准的 VS2017 解决方案。
Dockerfile
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 63537
EXPOSE 44369
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY WebApi/WebApi.csproj WebApi/
RUN dotnet restore WebApi/WebApi.csproj
COPY . .
WORKDIR /src/WebApi
RUN dotnet build WebApi.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish WebApi.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApi.dll"]
.dockerignore
.dockerignore
.env
.git
.gitignore
.vs
.vscode
docker-compose.yml
docker-compose.*.yml
*/bin
*/obj
docker-compose.yml
version: '3.4'
services:
webapi:
image: webapi
build:
context: .
dockerfile: WebApi/Dockerfile
我已经通过更改 .dockerignore 文件、删除它等尝试了所有建议的解决方案。
【问题讨论】:
-
COPY WebApi/WebApi.csproj WebApi/fails asWebApi/WebApi.csproj这一行不存在,请检查原因 -
相同的配置在本地工作。
-
请注意,将 dockerfile 放置在哪个文件夹中,或者分别在哪个文件夹中调用
docker build命令很重要。 Docker 将对该文件夹(以及所有子文件夹)进行快照,并将其转发给 docker 守护进程进行处理。 IE。您在 dockerfile 中的路径必须与您调用docker build命令的位置相对。 -
@ChirdeepTomar 你解决了这个问题吗?
-
@starianchen-MSFT 是的,使用构建任务代理中的 Docker Compose 任务。
标签: c# docker visual-studio-2017 docker-compose azure-devops