use*_*299 5 docker visual-studio-2017
COPY失败:CreateFile \?\ C:\ ProgramData \ Docker \ tmp \ docker-builder056926419 \ WebApplication1.sln:系统找不到指定的文件。
样本文件:
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS builder
WORKDIR /src
COPY WebApplication1.sln ./
COPY WebApplication1/WebApplication1.csproj Web/
RUN dotnet restore
COPY . .
WORKDIR /src/Web
RUN dotnet build -c Release -o /app
FROM builder AS publish
RUN dotnet publish -c Release -o /app
FROM base AS production
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
Run Code Online (Sandbox Code Playgroud)
在Visual Stundio 2019中,我发现了一个有趣的问题\情境。当您尝试创建由VS自动生成的dockerfile时,生成的Dockerfile放置在主项目中,而不是存在于.dockerignore的root(.sln)文件夹中。
我有我的项目的下一个文件夹结构:
<DIR> .
<DIR> ..
82 .dockerignore
6 305 .gitignore
<DIR> MyProject.API
<DIR> MyProject.API.Client
<DIR> MyProject.Model
<DIR> MyProject.Repository
<DIR> MyProject.Repository.Settings
6 567 MyProject.sln
4 899 README.md
<DIR> Tests.MyProject.Repository
<DIR> Tests.Model
<DIR> Tests.MongoContext.Infrastructure
<DIR> Tests.MongoQuery
<DIR> Tests.OdataFilters
Run Code Online (Sandbox Code Playgroud)
主要项目是MyProject.API.csproj(网页API)在MyProject.API。
VS自动生成的dockerfile具有以下结构:
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
#VS generate copy command explicitly for dependencies of main project (model, repository, settings, etc.)
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["MyProject.API/MyProject.API.csproj", "MyProject.API/"]
COPY ["MyProject.Model/MyProject.Model.csproj", "MyProject.Model/"]
COPY ["MyProject.Repository/MyProject.Repository.csproj", "MyProject.Repository/"]
COPY ["MyProject.Repository.Settings/MyProject.Repository.Settings.csproj", "MyProject.Repository.Settings/"]
RUN dotnet restore "MyProject.API/MyProject.API.csproj"
COPY . .
WORKDIR "/src/MyProject.API"
RUN dotnet build "MyProject.API.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "MyProject.API.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyProject.API.dll"]
Run Code Online (Sandbox Code Playgroud)
当我尝试根据Docker的指示构建映像时,我遇到了问题:
Linux容器类型:
Step 7/20 : COPY ["MyProject.API/MyProject.API.csproj", "MyProject.API/"]
COPY failed: stat /var/lib/docker/tmp/docker-builder799586484/MyProject.API/MyProject.API.csproj: no such file or directory
Run Code Online (Sandbox Code Playgroud)
Windows容器类型:
Step 7/20 : COPY ["MyProject.API/MyProject.API.csproj", "MyProject.API/"]
COPY failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder753862033\MyProject.API\MyProject.API.csproj: The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)
根据此答案,我将Dockerfile移至根文件夹(存在.sln和.dockerignore文件的位置),并且问题得到解决。
目录结构有问题。
docker build我不确定如何让它在 VS 中自动工作。
| 归档时间: |
|
| 查看次数: |
4131 次 |
| 最近记录: |