私は、2つのプロジェクトで構成されるVisual Studioソリューションからdockerイメージを構築しようとしています。
Visual Studioでビルドおよび実行できます。これにより、テスト環境に展開できるDockerイメージが生成されます。ただし、テスト環境でAPIに送信されたPOSTは500エラーを返します。次のような参照が表示されます:'/Users/Tim/Documents/Dotnet Code/dotnetcore-app/App/MyClass.cs'
エラー応答で、画像に何か問題があると疑うようになります-そのパスはラップトップ上にあります。
他の誰かが似たようなものに出くわすか、このようなマルチプロジェクトソリューションをDockerコンテナーに構築するための指針を提供できると期待しています。
免責事項:ドットネットコアとビジュアルスタジオでの作業はこれが初めてです。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レベルで実行されます。