gpt4 book ai didi

docker - .net核心docker通过VS2019运行,但镜像生成出现错误且无法正常工作

转载 作者:行者123 更新时间:2023-12-02 19:26:57 25 4
gpt4 key购买 nike

  "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,以完成此构建并运行应用程序

最佳答案

如果在Visual Studio中查看“容器工具”输出,则会看到类似以下的行:

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会将 Activity 目录的内容提升到MobyLinux VM中,并且所有复制命令以及此类命令都将在MobyLinux VM中而不是本地文件系统上的该路径上运行。因为项目通常需要访问同一解决方案中的其他项目才能进行构建,所以Visual Studio创建的Dockerfile相对于您的解决方案目录,因此整个解决方案目录在MobyLinux中被提升。

您执行的操作很可能是直接导航到您的项目目录并从那里运行Dockerfile,而无需传递目录用作“根”。这样,Docker只是简单地提升了当前项目(即您的项目,目录),并且MobyLinux VM中的结果路径不再与Dockerfile中的内容匹配。

简而言之,如果您想手动构建镜像,则需要确保提升的 Activity 目录是您的解决方案目录,而不是您的项目目录。您可以简单地通过将上面命令的最后一个字符串传递给您自己的命令来实现,这将使它相对于您的解决方案。

关于docker - .net核心docker通过VS2019运行,但镜像生成出现错误且无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55475041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com