簡體   English   中英

從多項目點網核心解決方案構建 Docker 鏡像

[英]Building a Docker image from a multi project dot net core solution

我正在嘗試從包含兩個項目的 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"]

雖然是構建“Main”項目,但它是在 sln 級別執行的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM