gpt4 book ai didi

docker - 为什么我在Docker容器内的多解决方案asp.net-core应用程序中找不到MSBuild

转载 作者:行者123 更新时间:2023-12-02 21:06:14 26 4
gpt4 key购买 nike

我正在尝试将我的asp.net-core应用程序包含在Docker容器中。当我使用Microsoft secret 存储来保存凭据时,我需要在容器中运行dotnet user-secrets命令。应用程序在启动时需要读取这些凭据,因此我必须在启动应用程序之前运行命令。当尝试在我的Dockerfile中执行此操作时,出现错误:

 ---> Running in 90f974a06d83
Could not find a MSBuild project file in '/app'. Specify which project to use with the --project option.

我尝试先构建应用程序,然后再使用已经构建的dll构建容器,但这给了我同样的错误。我还尝试使用ENTRYPOINT [“/ bin / bash”]连接到容器,然后在容器中环顾四周。似乎创建的/ app文件夹不包含.csproj文件。我不确定这是否可能是错误。

我的Dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["Joinme.Facade/Joinme.Facade.csproj", "Joinme.Facade/"]
COPY ["Joinme.Domain/Joinme.Domain.csproj", "Joinme.Domain/"]
COPY ["Joinme.Business/Joinme.Business.csproj", "Joinme.Business/"]
COPY ["Joinme.Persistence/Joinme.Persistence.csproj", "Joinme.Persistence/"]
COPY ["Joinme.Integration/Joinme.Integration.csproj", "Joinme.Integration/"]
RUN dotnet restore "Joinme.Facade/Joinme.Facade.csproj"
COPY . .
WORKDIR "/src/Joinme.Facade"
RUN dotnet build "Joinme.Facade.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "Joinme.Facade.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
RUN dotnet user-secrets set "jwt:secret" "some_password"
ENTRYPOINT ["dotnet", "Joinme.Facade.dll"]

我的预期结果是设置了 secret ,因此我可以启动容器而不会崩溃。

最佳答案

简单明了:操作失败,因为在此阶段,没有*.csproj命令需要的user-secrets文件。但是,由于以下几个原因,这不是您应该执行的操作:

  • 用户 secret 不可用于生产。您可以在这里设置环境变量,而无需dotnet或SDK,就可以一样轻松,甚至实际上更轻松。
    ENV jwt:secret some_password
  • 实际上,您不应该在Dockerfile中存储 secret ,因为这会进入源代码控制,并以纯文本形式公开。使用Docker secrets或外部提供程序(例如Azure Key Vault)。
  • 无论如何,您都不想基于SDK构建最终图像。这将使您的容器镜像很大,这意味着到/从容器注册表的传输时间更长,以及存储/带宽成本更高。如果发布自包含文件(即,使其尽可能小),则最终镜像应基于运行时,甚至基于alpine之类。
  • 关于docker - 为什么我在Docker容器内的多解决方案asp.net-core应用程序中找不到MSBuild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57867723/

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