当前位置: 首页 > 面试题库 >

ASP.NET 5:使用多项目解决方案的Docker构建

蒋阳华
2023-03-14
问题内容

我正在尝试创建由4个项目组成的ASP.NET 5解决方案的映像。结构如下:

  • FlashTools(ASP.NET 5类库)
  • 模型(ASP.NET 5类库)
  • QuizzCorrector(ASP.NET 5 Web应用程序)
  • QuizzService(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

我在此线程https://github.com/aspnet/aspnet-
docker/issues/19
上看到,在多项目解决方案中,我们应该运行命令“ kpm pack”将我的应用打包为可部署和可运行的形式。

我用kpm
pack命令找不到Dockerfiles的任何示例,只有文档:https : //github.com/aspnet/Home/wiki/Package-
Manager

我当然也尝试在Dockerfile中使用 ADDCOPY 命令将项目的内容复制到容器的文件系统中,但是仍然是相同的错误。

谢谢你帮我


问题答案:

更新日期:2018年2月14日

我之前的答案没有考虑编写Dockerfile的最佳实践。它对于具有多个Web项目的解决方案也不起作用,其中每个应用程序必须在单独的Docker容器中运行。更好的方法是在开发环境中构建和发布ASP.NET
Core应用程序,然后在针对生产用途进行了优化的Docker容器中运行该应用程序。

  1. 在Web应用程序文件夹中创建Dockerfile
  2. 将以下内容放入其中

    FROM microsoft/aspnetcore
    

    COPY ./publish /publish
    WORKDIR /publish
    EXPOSE 5000/tcp
    ENTRYPOINT [“dotnet”, “QuizzCorrector.dll”]

  3. 通过运行来构建和发布项目 dotnet publish -c Release -o publish

  4. 通过运行构建Docker映像 docker build -t QuizzCorrector

请注意,microsoft/aspnetcoreDocker映像是仅用于运行时的映像,不提供.NET Core SDK,这使其在生产中更轻巧更好。

可能已经晚了,但是对于那些仍在努力使它起作用的人,我将回答这个问题。
您需要在解决方案级别创建一个Dockerfile。然后,您需要更新您的工作文件夹以使用Web项目所在的文件夹。考虑到最终的Dockerfile
kpmk实用程序已被一种 dotnet工具取代,因此在此处。

FROM microsoft/dotnet:latest

COPY . /app
WORKDIR /app/src/QuizzCorrector
RUN ["dotnet", "restore"]

EXPOSE 5004
ENTRYPOINT ["dotnet", "run"]


 类似资料:
  • 救急,我導入的maven項目怎麽構建報錯,我自己下了jdk但是好像他構建用的不是我下載的,我又不知道怎麽更換 環境變量也設置了,但是他用的不是我下載和設置的jdk,我安裝在D盤,他用的是D盤的jdk,求大佬解答 ======== 上面的問題解決了但是還是報錯:

  • 本文向大家介绍使用IDEA启动项目遇见ClassNotFoundException的解决方案,包括了使用IDEA启动项目遇见ClassNotFoundException的解决方案的使用技巧和注意事项,需要的朋友参考一下 一. 错误现象 本地开发 SpringBoot 项目的时候,在集成 MyBatis 查询数据库的时候,使用 IDEA 启动项目的时候,有时候会遇见如下的报错: Caused by:

  • 问题内容: 将Git与Visual Studio解决方案()和Projects一起使用时,我应包括哪些文件? 问题答案: 我将以下.gitignore用于C#项目。在需要时会添加其他模式。

  • 本文向大家介绍SpringBoot项目@Async方法问题解决方案,包括了SpringBoot项目@Async方法问题解决方案的使用技巧和注意事项,需要的朋友参考一下 现象: 1. 表面现象: 方法中输出的日志, 日志文件中找不到, 也没有任何报错(即@Async标注的方法没有执行, 也没有报错) 2. 分析现象: 日志中某个时刻之后没有了task-xxx线程的日志 原因: @Async异常方法默

  • 我看过这个答案: 编辑。csproj文件并更正解决方案文件夹(包含packages文件夹)的相对路径为我解决了这个问题。 但是我不知道该编辑什么。 我正在Visual Studio 2013中制作一个C项目。我有一个包含三个项目的解决方案。其中一个项目需要Nuget包。 我在我的解决方案上使用Manage NuGet软件包来安装NuGet包。从那里我选择了一个需要这个包的项目。我还使用了Enabl

  • 如您所见,存在版本冲突,但gradle似乎认识到了冲突,并应用了默认的“最新版本”策略,这正是我想要的。 但是,当尝试运行(手动或通过Android Studio)时,我会得到 对类似问题的一些回答建议ing不需要的jar,但我遇到了许多类似的冲突,而且有点失控。