我有一个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:无法打开共享对象文件:没有这样的文件或目录
我正在按照Containerize.NET Core应用程序的说明创建docker映像。
如何为dotnet应用程序创建docker镜像?
好吧,你做到了。
可能出了问题的是,被称为indy
的DLL没有复制到App文件夹中。
由于您正在复制数据,请验证它是否包含在bin/Release/netcoreapp3.1/publish
的原始版本中
确保bin/Release/
目录与Dockerfile所在的目录相同。
您可以指定要生成的项目.csproj或.sln。
你可以看看下面的dockerfile,希望能对你有所帮助。
FROM microsoft/aspnetcore-build AS builder
WORKDIR /source
COPY projectname.csproj .
RUN dotnet restore
RUN dotnet build projectname.csproj -c Release -o /app/build
COPY . .
RUN dotnet publish -c Release -o /app/publish
FROM microsoft/aspnetcore
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "projectname.dll"]