.net core docker正在通过VS2019工作,但是图像构建出错并且无法正常工作

问题描述 投票:0回答:1
  "Docker": {
  "commandName": "Docker",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/api/values",
  "httpPort": 52706,
  "useSSL": true,
  "sslPort": 44344
}

这通过visual studio运行时给出输出

但是在构建时,它会抛出错误

DockerFile:

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 83
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["testdocker/testdocker.csproj", "testdocker/"]
RUN dotnet restore "testdocker/testdocker.csproj"
COPY . .
WORKDIR "/src/testdocker"
RUN dotnet build "testdocker.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "testdocker.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENV ASPNETCORE_URLS http://+:83
ENTRYPOINT ["dotnet", "testdocker.dll"]

构建docker镜像

docker build -t testdock .

但它给了

COPY failed: stat /var/lib/docker/tmp/docker-builder666564019/testdocker/testdocker.csproj,: no such file or directory

请帮助重写dockerfile以完成此构建并运行应用程序

docker asp.net-core-2.2
1个回答
0
投票

如果查看Visual Studio中的Container Tools输出,您将看到如下行:

docker build -f "C:\Users\foo\source\MySolution\TestDocker\Dockerfile" -t testdocker:dev --target base  --label "com.microsoft.created-by=visual-studio" "C:\Users\foo\source\MySolution"

在Windows上为Linux容器构建映像时,Docker会将活动目录的内容提升到MobyLinux VM中,并且所有复制命令等都在MobyLinux VM中针对该路径运行,而不是本地文件系统。由于项目通常需要访问同一解决方案中的其他项目才能构建,因此Visual Studio创建的Dockerfiles与您的解决方案目录相关,因此整个解决方案目录在MobyLinux中被提升。

很可能,你所做的是直接导航到你的项目目录并从那里运行Dockerfile,而不传递一个目录用作“root”。因此,Docker只是提升当前的数据,即您的项目,目录以及MobyLinux VM中的结果路径不再与Dockerfile中的路径相匹配。

如果您想手动执行映像构建,那么您需要确保解除的活动目录是解决方案目录,而不是项目目录。您只需将上面命令的最后一个字符串传递给您自己的命令即可实现,这将使其与您的解决方案相关。

© www.soinside.com 2019 - 2024. All rights reserved.