Docker VS 2017 PermissionError:[Errno 13]权限被拒绝:';v15\\Server\\sqlite3\\db.lock';

Docker VS 2017 PermissionError:[Errno 13]权限被拒绝:';v15\\Server\\sqlite3\\db.lock';,docker,.net-core,visual-studio-2017,docker-compose,azure-service-fabric,Docker,.net Core,Visual Studio 2017,Docker Compose,Azure Service Fabric,在使用基于ServiceFabric的解决方案并构建docker映像时,由于我的目录结构,我得到了以下信息: 我的目录结构是 D: D1: src: Foo.Fabric: Foo.Fabric: -----------------> This is context right now .vs Foo.Service:

在使用基于ServiceFabric的解决方案并构建docker映像时,由于我的目录结构,我得到了以下信息:

我的目录结构是

D:
  D1:
    src:
      Foo.Fabric:                          
        Foo.Fabric:                      -----------------> This is context right now
          .vs
        Foo.Service:
          DockerFile
          Foo.Service.csproj
        docker-compose.yml
        .dockerignore
      Foo.Lib:
        Foo.Lib:
          Foo.Lib.csproj
my docker-compose.yml的内容如下:

version: '3.4'
services:
  foo:
    image: foodockerimage
    build:
      context: .
      dockerfile: Foo.Service/Dockerfile
我的dockerfile的内容如下

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY Foo.Service/Foo.Service.csproj Foo.Service/
COPY ../Foo.Lib/Foo.Lib/Foo.Lib.csproj ../Foo.Lib/Foo.Lib/
RUN dotnet restore Foo.Service/Foo.Service.csproj
COPY . .
WORKDIR /src/Foo.Service
RUN dotnet build Foo.Service.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish Foo.Service.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Foo.Service.dll"]
正如我们在这里清楚地看到的,我需要与我的主Foo.Service.csproj一起构建这个Lib.csproj,问题是Lib项目的目录位置。由于其他一些解决方案使用了此选项,因此我无法将此Lib项目移动到Foo.Fabric文件夹中

现在,我最初得到的错误是“服务'foo'未能生成:复制失败:生成上下文之外的禁止路径:../foo.Lib/foo.Lib/foo.Lib.csproj”,好的,我得到了这个,我有一个错误的上下文,所以我在docker-compose.yml中更新为 生成:上下文:。要构建:上下文:…
要将上下文更改为当前目录的父目录,我必须再次更改dockerfile的路径,从而生成docker-compose.yml作为

version: '3.4'
services:
  foo:
    image: foodockerimage
    build:
      context: ..
      dockerfile: Foo.Fabric/Foo.Service/Dockerfile
而且

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY Foo.Fabric/Foo.Service/Foo.Service.csproj Foo.Fabric/Foo.Service/  #Updated
COPY Foo.Lib/Foo.Lib/Foo.Lib.csproj Foo.Lib/Foo.Lib/  #Updated
RUN dotnet restore Foo.Service/Foo.Service.csproj
COPY . .
WORKDIR /src/Foo.Service
RUN dotnet build Foo.Service.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish Foo.Service.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Foo.Service.dll"]
现在我遇到了这个错误“PermissionError:[Errno 13]权限被拒绝:'\\?\D:\D1\src\Foo.Fabric\.vs\Foo.Fabric\v15\Server\sqlite3\db.lock''

我真的受够了,起不来了。 顺便说一下,我正在使用:

Docker桌面社区版本2.0.0.0-win81(29211)引擎:18.09.0

Visual Studio专业版2017 15.9.3


Windows 10 1809

请确保使用dockerfile旁边的“.dockergnore”文件从生成中排除.vs文件夹。对于VS项目,它们通常如下所示:

.dockerignore
.env
.git
.gitignore
.vs
.vscode
docker-compose.yml
docker-compose.*.yml
*/bin
*/obj

是的,它必须位于无法生成的Dockerfile旁边。它的工作方式与.gitignore不同。例如,如果您对引用现有docker映像的服务使用
docker compose
,则可以将
.dockerignore
文件放在docker compose文件旁边。我遇到过类似的问题,但没有使用
Dockerfile