Dotnet 构建在 dockerfile 中不断失败

问题描述 投票:0回答:1

我有一个简单的 asp net web api 应用程序。文件夹结构如下面的屏幕截图所示。但是,我一直对 Dockerfile 第 16 行的

RUN dotnet build
有疑问。 我知道这只是路径不正确的问题,但我无法弄清楚出了什么问题。 以下是我的 Dockerfile:

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["TestApi.csproj", "TestApi/"]
RUN dotnet restore "TestApi/TestApi.csproj"
COPY . .
WORKDIR "/src/TestApi"
RUN dotnet build "TestApi.csproj" -c $BUILD_CONFIGURATION -o /app/build

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "TestApi.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "TestApi.dll"]

这是我执行时遇到的错误

docker build -t testapi .

#15 ERROR: process "/bin/sh -c dotnet build \"TestApi.csproj\" -c $BUILD_CONFIGURATION -o /app/build" did not complete successfully: exit code: 1
------
 > [build 7/7] RUN dotnet build "TestApi.csproj" -c Release -o /app/build:
1.173   All projects are up-to-date for restore.
2.757 CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point [/src/TestApi/TestApi.csproj]
2.765
2.766 Build FAILED.
2.766
2.766 CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point [/src/TestApi/TestApi.csproj]
2.767     0 Warning(s)
2.767     1 Error(s)
2.767
2.767 Time Elapsed 00:00:02.15
------
Dockerfile:16
--------------------
  14 |     COPY . .
  15 |     WORKDIR "/src/TestApi"
  16 | >>> RUN dotnet build "TestApi.csproj" -c $BUILD_CONFIGURATION -o /app/build
  17 |
  18 |     FROM build AS publish
--------------------
ERROR: failed to solve: process "/bin/sh -c dotnet build \"TestApi.csproj\" -c $BUILD_CONFIGURATION -o /app/build" did not complete successfully: exit code: 1

有人可以帮助我吗?谢谢你

docker asp.net-core dockerfile
1个回答
0
投票

我终于通过切换 docker 指令解决了我遇到的问题。 我将

COPY
移至
WORKDIR
下面,一切正常。

这是正在运行的 Dockerfile:

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["TestApi.csproj", "TestApi/"]
RUN dotnet restore "TestApi/TestApi.csproj"
WORKDIR "/src/TestApi"
COPY . .
RUN dotnet build "TestApi.csproj" -c $BUILD_CONFIGURATION -o /app/build

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "TestApi.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "TestApi.dll"]
© www.soinside.com 2019 - 2024. All rights reserved.