如何通过dockerfile将文件夹内容复制到/app?

Dav*_*Dev 4 .net docker .net-core dockerfile alpine-linux

我们有一个解决方案范围的文件夹,其中包含每个项目所需的共享设置。

我正在尝试将该文件夹的内容复制到 /app 文件夹,但它不起作用

这是我的 dockerfile 配置的一部分:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-alpine3.12 AS build

### this is where I'm trying to copy the contents of Shared Settings to /app
WORKDIR '/src/Shared Settings'
COPY '/src/Shared Settings' /app

### this is part of the rest of the docker file, which works fine
WORKDIR /src
COPY . .
WORKDIR /src/OurProject.Server
RUN dotnet restore OurProject.Server.csproj
RUN dotnet build OurProject.Server.csproj -c Release -o /app
Run Code Online (Sandbox Code Playgroud)

我需要更改什么才能将共享设置的内容复制到 Docker 容器中的 /app 文件夹?

Dav*_*aze 5

COPY指令的 Dockerfile 文档指出它有两种形式,一种是空格分隔形式,另一种是 JSON 数组形式,并且它还指出

包含空格的路径需要后一种 [JSON 数组] 形式。

因此,将其应用到您的特定路径中,您会得到

COPY ["src/Shared Settings", "/app"]
Run Code Online (Sandbox Code Playgroud)

一般来说,这在 Dockerfile 中是正确的:原生 Dockerfile 语法中唯一的引用是将内容写入 JSON 数组。将 aWORKDIR或 aCOPY命令括在单引号中并没有记录为有效。字符串形式的RUNorCMD是一个明显的例外,但这只是因为这些命令是通过 shell 运行的,并且应用了 shell 的引用规则。