Mac OS X Docker基线aspnet错误:未找到libdl

时间:2015-10-10 17:53:17

标签: asp.net macos docker asp.net-core

将boot2docker和Microsoft的基线aspnet映像与基本的yo aspnet项目一起使用:

FROM microsoft/aspnet:1.0.0-beta7

COPY project.json /app/
WORKDIR /app
RUN ["dnu", "restore"]
COPY . /app


EXPOSE 5000
ENTRYPOINT ["dnx", "-p", "project.json", "kestrel"]

我可以使用docker build -t mvcapp .成功构建,但是当我尝试运行docker run -i -p 5004:5004 -t mvcapp时,我收到以下错误:

  

System.DllNotFoundException:libdl at(包装器托管到本机)   Microsoft.AspNet.Server.Kestrel.Networking.PlatformApis / LinuxApis:dlopen的   (string,int)at   Microsoft.AspNet.Server.Kestrel.Networking.PlatformApis + LinuxApis.LoadLibrary   (System.String dllToLoad)[0x00000] in:0 at   Microsoft.AspNet.Server.Kestrel.Networking.Libuv.Load(System.String   dllToLoad)[0x00000] in:0 at   Microsoft.AspNet.Server.Kestrel.KestrelEngine..ctor(ILibraryManager   libraryManager,IApplicationShutdown appShutdownService)[0x00000] in   :0 ......

我尝试了几种不同的基本aspnet图像但收效甚微。 Mac OS X是否有特殊步骤才能实现这一目标?

编辑:我应该补充一点,运行相同的入口点命令dnx -p project.json kestrel确实有效,我可以成功访问localhost:5000。

1 个答案:

答案 0 :(得分:1)

我在Ubuntu 15.04上遇到了同样的问题。 我也尝试在Dockerfile中添加“ENV RUNTIME_PACKAGES libunwind8 gettext libssl-dev libcurl3-dev zlib1g”,但它不起作用。 根据{{​​3}},似乎之前的版本在beta7之前工作正常。

我发现我使用了错误的码头图片“microsoft / aspnet:1.0.0-beta7”。在我完成以下步骤后,它运行良好。

  1. 通过以下方式获取正确的泊坞窗图片: docker pull microsoft / aspnet:1.0.0-beta7-coreclr
  2. 修改dockerfile: 使用“FROM microsoft / aspnet:1.0.0-beta7-coreclr”而不是“FROM microsoft / aspnet:1.0.0-beta7”并添加“ENV RUNTIME_PACKAGES libunwind8,gettext,libssl-dev,libcurl3-dev,zlib1g”