通过基本的yo aspnet
项目使用boot2docker和Microsoft的基准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 (wrapper managed-to-native) 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。
最佳答案
我在Ubuntu 15.04上有同样的问题。
我还尝试在Dockerfile中添加“ENV RUNTIME_PACKAGES libunwind8 gettext libssl-dev libcurl3-dev zlib1g”,但是它不起作用。
根据Running-ASP.NET-5-beta4-in-Docker-with-DNX-runtime的说法,似乎beta7之前的早期版本运行良好。
我发现使用了错误的docker镜像“microsoft / aspnet:1.0.0-beta7”。在执行以下步骤之后,它工作正常。
docker pull microsoft / aspnet:1.0.0-beta7-coreclr
使用“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”
关于asp.net - Mac OS X Docker基准ASP.NET错误:找不到libdl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33057158/