VS 2017 PermissionError: [Errno 13] Permission denied: 'v15\\Server\\sqlite3\\db.lock'
Posted
技术标签:
【中文标题】VS 2017 PermissionError: [Errno 13] Permission denied: \'v15\\\\Server\\\\sqlite3\\\\db.lock\'【英文标题】:VS 2017 PermissionError: [Errno 13] Permission denied: 'v15\\Server\\sqlite3\\db.lock'VS 2017 PermissionError: [Errno 13] Permission denied: 'v15\\Server\\sqlite3\\db.lock' 【发布时间】:2019-06-02 19:23:41 【问题描述】:在开发基于 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
我的 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"]
正如我们在这里清楚地看到的那样,我需要构建这个 Lib.csproj 以及我的主 Foo.Service.csproj 问题是 Lib 项目的目录位置。因为它被其他一些解决方案使用,所以我不能在 Foo.Fabric 文件夹中移动这个 Lib 项目。
现在最初我收到“服务 '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] Permission denied: '\\?\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
【问题讨论】:
【参考方案1】:确保从构建中排除 .vs 文件夹,方法是使用 dockerfile 旁边的“.dockerignore”文件。对于 VS 项目,它们通常看起来像这样:
.dockerignore
.env
.git
.gitignore
.vs
.vscode
docker-compose.yml
docker-compose.*.yml
*/bin
*/obj
【讨论】:
是的,它必须紧挨着构建失败的 Dockerfile。例如,它似乎不像 .gitignore 那样工作, 如果您将docker-compose
与引用现有docker 映像的服务一起使用,那么您可以将.dockerignore
文件放在docker-compose 文件旁边。我遇到了类似的问题,但没有使用Dockerfile
。以上是关于VS 2017 PermissionError: [Errno 13] Permission denied: 'v15\\Server\\sqlite3\\db.lock'的主要内容,如果未能解决你的问题,请参考以下文章
PermissionError:[Errno 13] 权限被拒绝:
当 conda install django, PermissionError(13, 'Permission denied')