从多项目点网核心解决方案构建 Docker 镜像



我正在尝试从由两个项目组成的Visual Studio解决方案构建Docker映像:

  • 一个项目包含通用代码(http方法,日志记录等(
  • 二是业务逻辑和应用

我可以在 Visual Studio 中生成和运行,它会生成一个 Docker 映像,我可以将其部署到我们的测试环境中。但是,发送到测试环境中的 API 的任何 POST 都会返回 500 错误。我可以看到以下引用: '/Users/Tim/Documents/Dotnet Code/dotnetcore-app/App/MyClass.cs'错误响应,这让我怀疑图像有问题 - 该路径在我的笔记本电脑上。

希望其他人可能遇到过类似的事情,或者可以提供一些关于将这样的多项目解决方案构建到 Docker 容器中的指示。

免责声明:这是我第一次使用dotnet core和Visual Studio - 我有一些docker的经验。

如果您使用 Visual Studio 中的"标准"Dockerfile 模板,则在本地 PC(可能是 Windows(上构建"通用"项目以及在 docker 容器(可能是 Linux(中构建"主"项目时可能会遇到问题。 "主"DLL引用Windows构建的DLL,因此存在问题。

确保不仅要复制主项目,

还要复制公共项目,以便 dotnet 也可以在 docker 中生成它。

试试这个 dockerfile:

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT=Production
ENV ASPNETCORE_URLS http://*:5000
EXPOSE 5000
FROM microsoft/aspnetcore-build:2.0 AS builder
ARG Configuration=Release
WORKDIR /src
COPY *.sln ./
COPY Project.Main/Project.Main.csproj Project.Main/
COPY Project.Common/Project.Common.csproj Project.Common/
RUN dotnet restore
COPY . .
WORKDIR /src/ProjectMain
RUN dotnet build -c $Configuration -o /app
FROM builder AS publish
ARG Configuration=Release
RUN dotnet publish -c $Configuration -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Project.Main.dll"]

虽然是构建"主"项目,但它是在 sln 级别执行的。

最新更新