gpt4 book ai didi

docker - ASP.NET 5 : docker build with multi-projects solution

转载 作者:IT老高 更新时间:2023-10-28 12:40:04 26 4
gpt4 key购买 nike

我正在尝试创建由 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 .

我的问题是 docker 告诉我的那一刻

Unable to locate Models >= 1.0.0

Unable to locate FlashTools >= 1.0.0

Unable to locate QuizzService >= 1.0.0

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

我找不到任何使用 kpm pack 命令的 Dockerfile 示例,只有文档: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. 构建和发布项目
  5. 通过运行 docker build -t QuizzCorrector
  6. 构建 Docker 镜像

请注意,microsoft/aspnetcore Docker 镜像是仅运行时镜像,它不提供 .NET Core SDK,这使它更轻巧且更适合生产使用。


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

FROM microsoft/dotnet:latest

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

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

关于docker - ASP.NET 5 : docker build with multi-projects solution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28880135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com