【问题标题】:How to create docker image for dotnet app?如何为 dotnet 应用程序创建 docker 映像?
【发布时间】:2021-01-24 11:43:23
【问题描述】:

我有一个 dotnet 项目,当我运行 dotnet 时它可以工作,我正在尝试将那个 dotnet 项目容器化。 为此,我创建了 Dockerfile,如下所示:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1

COPY bin/Release/netcoreapp3.1/publish/ App/
WORKDIR /App

EXPOSE 5000

CMD ["dotnet", "MediatorAgent.dll"]

在创建 docker 映像之前,我确实运行了 dotnet publish -c Release。现在,当我尝试运行此 docker 映像时,出现以下错误

未处理的异常。 System.DllNotFoundException:无法加载共享库“indy”或其依赖项之一。为了帮助诊断加载问题,请考虑设置 LD_DEBUG 环境变量: libindy: cannot open shared object file: No such file or directory

我正在按照Containerize a .NET Core app 的说明创建 docker 映像。

【问题讨论】:

    标签: c# docker .net-core hyperledger-indy


    【解决方案1】:

    如何为 dotnet 应用创建 docker 镜像?

    嗯,你做到了。

    可能出错的是引用为indy 的DLL 没有复制到App 文件夹中。

    由于您正在复制数据,请验证它是否包含在 bin/Release/netcoreapp3.1/publish 的原始版本中

    【讨论】:

    • 我确实将此 libindy.so 文件添加到 bin/Release/netcoreapp3.1/publish 文件夹,但仍然遇到同样的问题。较早的 dotnet 运行不起作用,所以我做了 sudo apt-get install -y libindy,这在 /usr/lib 中添加了 libindy.so,所以我将 libindy.so 复制到发布文件夹
    • 好的,所以 - 我想你可以在你的机器上本地运行它。比较输出调试文件夹和输出发布文件夹,看看调试文件夹有没有文件,发布文件夹没有。在 99% 的情况下,这是由于缺少特定文件。您是如何在项目中引用该文件的?
    猜你喜欢
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多