【问题标题】:Running Docker with ABP Module Template Issue使用 ABP 模块模板问题运行 Docker
【发布时间】:2021-09-22 09:27:32
【问题描述】:

我从一个使用模块模板的项目开始使用 ABP:

abp new Sample -t 模块 --no-ui

由于我也不熟悉 Docker,所以我一开始并没有在 Docker 上运行,而是继续为应用程序编写代码,一切正常。
现在我有一个正在运行的应用程序,其中包含一些功能,我想让它与 Docker 一起工作,但我遇到了一个问题,即容器启动并立即以代码 1 退出而没有日志。

无法解决问题,然后我从 ABP 模块模板创建了另一个解决方案,当我尝试 docker-compose 甚至 docker run 在项目上单独运行时遇到了同样的问题。
由于 ABP 模块模板中的 docker-compose 文件和 Dockerfile 不是最新的。我做了一些更改,这是我在以下更改后设法构建的 Dockerfile 脚本。

有没有人遇到过同样的问题或知道为什么应用程序容器以 EXITED(1) 退出?

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["host/Sample.IdentityServer/Sample.IdentityServer.csproj", "host/Sample.IdentityServer/"]
COPY ["host/Sample.Host.Shared/Sample.Host.Shared.csproj", "host/Sample.Host.Shared/"]
COPY ["src/Sample.Domain.Shared/Sample.Domain.Shared.csproj", "src/Sample.Domain.Shared/"]
COPY ["src/Sample.Application.Contracts/Sample.Application.Contracts.csproj", "src/Sample.Application.Contracts/"]
RUN dotnet restore "host/Sample.IdentityServer/Sample.IdentityServer.csproj" -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/host/Sample.IdentityServer
RUN dotnet build --no-restore -c Release -o /app

FROM build AS publish
RUN dotnet publish --no-restore -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Sample.IdentityServer.dll"]

【问题讨论】:

  • 看来为容器化创建的文件似乎已经过时了,我为它开了一个issue => github.com/abpframework/abp/issues/10103
  • 感谢 berkansasmaz。关于我面临的关于为什么 exited(1) 发生的问题有什么想法吗?
  • 不幸的是,我不知道:(

标签: docker abp


【解决方案1】:

模块模板没有可运行的项目。有示例宿主项目可帮助您开发和测试您的模块。

所以基本上,您是在 dockerizing 测试主机应用程序。通常,您应该开发您的模块并让最终应用程序(使用您的模块的可运行应用程序)应该是 dockerizing。可以是非分层应用,也可以是分层 Angular 应用等。

示例: Abp Account Management 是一个模块,供您使用 CLI 或 Web 界面创建的 application template 使用。因此,您需要对 正在运行的应用程序而不是您正在使用的库进行 dockerize。

【讨论】:

  • 它确实有可运行的项目。您可以使用我的问题中的命令自己尝试一下。它将具有 Sample.HttpApi.Host 和 Sample.IdentityServer。然后,您可以查看 dockerfile 和 docker-compose 文件。它已经过时了,因为 berkansasmaz 已经在上面打开了一个问题。