运行DOCKER BUILD时复制命令失败
我正在尝试创建一个Docker映像,但它不起作用。我试图从CLI运行此Docker命令,但出现以下错误:运行DOCKER BUILD时复制命令失败,docker,Docker,我正在尝试创建一个Docker映像,但它不起作用。我试图从CLI运行此Docker命令,但出现以下错误: (from the <repo root>/src/Services/Accounts/Accounts.Api) > docker build . 这是我的文件 FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base WORKDIR /app EXPOSE 80 FROM microsoft/dotnet:2.1-sd
(from the <repo root>/src/Services/Accounts/Accounts.Api)
> docker build .
这是我的文件
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
RUN ls -al
COPY ["src/Services/Accounts/Accounts.Api/Accounts.Api.csproj", "src/Services/Accounts/Accounts.Api/"]
COPY ["src/Services/Accounts/Accounts.Api/NuGet.config", "src/Services/Accounts/Accounts.Api/"]
RUN dotnet restore "src/Services/Accounts/Accounts.Api/Accounts.Api.csproj"
COPY . .
WORKDIR "/src/src/Services/Accounts/Accounts.Api"
RUN dotnet build "Accounts.Api.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "Accounts.Api.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Hornet.Accounts.Api.dll"]
我还尝试从repo根目录运行此命令:
> docker build .\src\Services\Accounts\Accounts.Api
为什么它试图在某个/var/lib/docker/tmp/blah
文件夹中查找我的文件
进一步资料:
- Windows 10操作系统
- Docker CE与Linux容器
- VSCode
docker构建[选项]路径
构建上下文是您使用路径定义的位置,Docker可以使用构建上下文中的文件进行构建。(不能将生成上下文之外的文件用于生成。)
在COPY
语句的Dockerfile中,指定源文件相对于repo根的位置。这意味着
您应该从
路径运行build命令,如下所示:
docker构建。
您没有在问题中指定Dockerfile的路径,但在我看来,它位于您的repo的子文件夹中。要使构建工作正常,请从
中发出docker build命令,如下所示:
docker build-f.
Dockerfile必须位于生成上下文中
我认为获得构建上下文和Dockerfile的正确位置将修复您的构建。
还要记住使用-t
标记标记图像
为什么它要在/var/lib/docker/tmp/blah文件夹中查找我的文件
您可能知道,Docker使用Docker for Windows应用程序中的Linux虚拟机来开发基于Linux的容器。此位置仅指VM中的位置。要使复制正常工作,您试图复制的文件(例如/src/Services/Accounts/Accounts.Api/Accounts.Api.csproj
)必须位于构建上下文中。显然它不见了。请阅读如何工作,特别是什么是最重要的。我还假设你知道它的用途和工作原理。Sweet-thanky you@mark:)我误解了我所提供的
参数的用法。我以为这是本地的文件夹来寻找Dockerfile。。。但是它是到构建上下文的路径。明白了:)太好了,谢谢你。
> docker build .\src\Services\Accounts\Accounts.Api