gie*_*sx3 6 .net c# docker .net-core asp.net-core
我有一个名为 SaveGame 的 .Net 5 项目,Dockerfile
由 Visual Studio 自动生成。检查了许多官方教程之类的东西 - Dockerfile 看起来总是一样的。
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["SaveGame.API/SaveGame.API.csproj", "SaveGame.API/"]
RUN dotnet restore "SaveGame.API/SaveGame.API.csproj"
COPY . .
WORKDIR "/src/SaveGame.API"
RUN dotnet build "SaveGame.API.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "SaveGame.API.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "SaveGame.API.dll"]
Run Code Online (Sandbox Code Playgroud)
我尝试使用命令构建 Docker 映像
docker build -t savegame .
然而COPY
命令未能给我这个
[+] Building 0.4s (9/17)
=> [internal] load .dockerignore 0.0s
=> => transferring context: 35B 0.0s
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 32B 0.0s
=> [internal] load metadata for mcr.microsoft.com/dotnet/sdk:5.0-buster-slim 0.3s
=> [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim 0.3s
=> CANCELED [build 1/7] FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim@sha256:1ab344109a790d555aa9d618edc012a 0.0s
=> => resolve mcr.microsoft.com/dotnet/sdk:5.0-buster-slim@sha256:1ab344109a790d555aa9d618edc012a2f88781f01238fd 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 2.78kB 0.0s
=> CANCELED [base 1/2] FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim@sha256:76b29928ab5b442469c89cc7eb5f6 0.0s
=> => resolve mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim@sha256:76b29928ab5b442469c89cc7eb5f6ef12d9e6e4139a 0.0s
=> CACHED [build 2/7] WORKDIR /src 0.0s
=> ERROR [build 3/7] COPY [SaveGame.API/SaveGame.API.csproj, SaveGame.API/] 0.0s
------
> [build 3/7] COPY [SaveGame.API/SaveGame.API.csproj, SaveGame.API/]:
------
failed to solve with frontend dockerfile.v0: failed to build LLB: failed to compute cache key: "/SaveGame.API/SaveGame.API.csproj" not found: not found
Run Code Online (Sandbox Code Playgroud)
为什么找不到该文件?
编辑:
在 Github -> Azure WebApp (Linux) 部署作业上运行它,我得到了同样的结果
Status: Downloaded newer image for mcr.microsoft.com/dotnet/sdk:5.0-buster-slim
---> 8eab6017c69e
Step 6/17 : WORKDIR /app
---> Running in bbe55e12dd3a
COPY failed: file not found in build context or excluded by .dockerignore: stat src/SaveGame.API/SaveGame.API.csproj,: file does not exist
Removing intermediate container bbe55e12dd3a
---> 595dc1db2583
Step 7/17 : COPY src/SaveGame.API/SaveGame.API.csproj, SaveGame.API/
Error: Process completed with exit code 1.
Run Code Online (Sandbox Code Playgroud)
WORKDIR
不做你期望它做的事情。它设置 docker 容器中的当前目录。使用
COPY ["src/SaveGame.API/SaveGame.API.csproj", "SaveGame.API/"]
Run Code Online (Sandbox Code Playgroud)
它会工作得很好。另外,如果当前目录中没有文件,则需要在运行之前cd
进入。SaveGame.API
dotnet restore
.sln
归档时间: |
|
查看次数: |
5648 次 |
最近记录: |