gpt4 book ai didi

docker - VS 2017 权限错误 : [Errno 13] Permission denied: 'v15\\Server\\sqlite3\\db.lock'

转载 作者:行者123 更新时间:2023-12-03 21:39:47 25 4
gpt4 key购买 nike

在处理基于 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 项目的目录位置。因为它被其他一些解决方案使用,所以我不能不将这个 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] 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

最佳答案

通过在 dockerfile 旁边使用“.dockerignore”文件,确保从您的构建中排除 .vs 文件夹。通常它们看起来像这样,对于 VS 项目:

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

关于docker - VS 2017 权限错误 : [Errno 13] Permission denied: 'v15\\Server\\sqlite3\\db.lock' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54086081/

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