我正在尝试创建由4个项目组成的ASP.NET 5解决方案的映像。结构如下:
我有一个简单的Dockerfile,看起来像这样:
FROM microsoft/aspnet COPY . /app WORKDIR /app RUN ["kpm", "restore"] EXPOSE 5004 ENTRYPOINT ["k", "kestrel"]
但不确定放在哪里。在我的解决方案的根文件夹中global.json所在的位置,还是在我的Web应用程序文件夹中我的project.json所在的位置?当然,我已经根据该文件的位置对其进行了修改。
无论如何,两者似乎都可以正常工作,因为它在我运行命令时下载了我需要的所有库
docker build -t quizzcorrector。
我的问题是码头工人告诉我
无法找到> = 1.0.0的模型 无法找到FlashTools> = 1.0.0 无法找到QuizzService> = 1.0.0
无法找到> = 1.0.0的模型
无法找到FlashTools> = 1.0.0
无法找到QuizzService> = 1.0.0
我在此线程https://github.com/aspnet/aspnet- docker/issues/19上看到,在多项目解决方案中,我们应该运行命令“ kpm pack”将我的应用打包为可部署和可运行的形式。
我用kpm pack命令找不到Dockerfiles的任何示例,只有文档:https : //github.com/aspnet/Home/wiki/Package- Manager
我当然也尝试在Dockerfile中使用 ADD 或 COPY 命令将项目的内容复制到容器的文件系统中,但是仍然是相同的错误。
谢谢你帮我
更新日期:2018年2月14日
我之前的答案没有考虑编写Dockerfile的最佳实践。它对于具有多个Web项目的解决方案也不起作用,其中每个应用程序必须在单独的Docker容器中运行。更好的方法是在开发环境中构建和发布ASP.NET Core应用程序,然后在针对生产用途进行了优化的Docker容器中运行该应用程序。
将以下内容放入其中
FROM microsoft/aspnetcore
COPY ./publish /publish WORKDIR /publish EXPOSE 5000/tcp ENTRYPOINT [“dotnet”, “QuizzCorrector.dll”]
通过运行来构建和发布项目 dotnet publish -c Release -o publish
dotnet publish -c Release -o publish
docker build -t QuizzCorrector
请注意,microsoft/aspnetcoreDocker映像是仅用于运行时的映像,不提供.NET Core SDK,这使其在生产中更轻巧更好。
microsoft/aspnetcore
可能已经晚了,但是对于那些仍在努力使它起作用的人,我将回答这个问题。 您需要在解决方案级别创建一个Dockerfile。然后,您需要更新您的工作文件夹以使用Web项目所在的文件夹。考虑到最终的Dockerfile kpm和k实用程序已被一种dotnet工具取代,因此在此处。
kpm
k
dotnet
FROM microsoft/dotnet:latest COPY . /app WORKDIR /app/src/QuizzCorrector RUN ["dotnet", "restore"] EXPOSE 5004 ENTRYPOINT ["dotnet", "run"]