Невозможно найти вид внутри контейнера докера - PullRequest
1 голос
/ 23 апреля 2019

Я использую приложение ASP.Net Core (2.1) в контейнере. Контейнер работает под управлением Debian Stretch. Все работает отлично, за исключением одной маленькой детали - всякий раз, когда я хочу использовать Rotativa, я получаю это сообщение:

Unable to find view '/app/wwwroot/templates/IssuedInvoice.cshtml'. The following locations were searched:\n/app/wwwroot/templates/IssuedInvoice.cshtml

Это очень вероятно означает, что файл не существует. Честно говоря, я захожу в док-контейнер и выдаю cat /app/wwwroot/templates/IssuedInvoice.cshtml, и что я нахожу? Файл указан без ошибок.

Кто-нибудь сталкивался с такой проблемой? Я не думаю, что это проблема с разрешениями, так как приложение в любом случае запускается внутри контейнера от имени пользователя root.

Я проверил это вне контейнера, и все работает нормально, то же самое в конфигурациях Debug и Release.

Dockerfile

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["JTEPanel.Api/JTEPanel.Api.csproj", "JTEPanel.Api/"]
COPY ["JTEPanel.Infrastructure/JTEPanel.Infrastructure.csproj", "JTEPanel.Infrastructure/"]
COPY ["JTEPanel.SmsApi/JTEPanel.SmsApi.csproj", "JTEPanel.SmsApi/"]
COPY ["JTEPanel.Domain/JTEPanel.Domain.csproj", "JTEPanel.Domain/"]
COPY ["JTEPanel.Common/JTEPanel.Common.csproj", "JTEPanel.Common/"]
RUN dotnet restore "JTEPanel.Api/JTEPanel.Api.csproj"
COPY . .
WORKDIR "/src/JTEPanel.Api"
RUN dotnet build "JTEPanel.Api.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "JTEPanel.Api.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
VOLUME /app/wwwroot

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales libgdiplus wkhtmltopdf

RUN ln -s /usr/bin/wkhtmltopdf /app/wwwroot/Rotativa/wkhtmltopdf

RUN sed -i -e 's/# pl_PL.UTF-8 UTF-8/pl_PL.UTF-8 UTF-8/' /etc/locale.gen && \
    dpkg-reconfigure --frontend=noninteractive locales && \
    update-locale LANG=pl_PL.UTF-8

ENV LANG pl_PL.UTF-8

ENTRYPOINT ["dotnet", "JTEPanel.Api.dll"]
...