.NET Core 2.1 Centos 7拒绝访问路径'/ proc / 1 / map_files'

时间:2018-07-30 16:39:02

标签: c# docker asp.net-core centos asp.net-core-2.1

我最近按照建议的升级指南将.NET Core Web应用程序项目升级到.NET Core 2.1。

我还更新了我的Dockerfile-一个使用高山运行时映像作为基础,另一个使用标准aspnet运行时映像作为基础。但是,在运行于Centos 7.4的Docker主机上运行它们时,它们立即失败,并显示消息“拒绝访问路径'/ proc / 1 / map_files'”。映像是在运行它们的同一台计算机上构建的。

在Windows上构建并运行时,没有问题。将基于Centos构建的映像导入Docker for Windows后,它们运行良好。只会在Centos docker主机上出现此问题。

我已经在Github here上提出了一个问题,并且发现了一个类似的问题here,但是给出的唯一解决方案是使用工作目录(我尝试过但没有工作) 。

不知道这里发生了什么,但希望有人曾经遇到过。

码头工人文件是

FROM microsoft/dotnet:2.1.2-aspnetcore-runtime-alpine3.7
COPY /publish/ .
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000

RUN mkdir web-data
RUN mkdir web-data/my-api

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

FROM microsoft/dotnet:2.1.2-aspnetcore-runtime
COPY /publish/ .
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000

ENV REDIS_URL redis
ENV REDIS_PORT 6379
ENV REDIS_KEY_NAME DataProtection-Keys

ENV DP_CERT_PATH /etc/ssl/dotnet/dp-cert.pfx

RUN mkdir web-data
RUN mkdir web-data/my-app

# this is required in order to create Excel reports
RUN apt-get update
RUN apt-get install -y libgdiplus

ENTRYPOINT ["dotnet", "My.App.dll"]

docker run命令如下

docker run -d -e ASPNETCORE_ENVIRONMENT=Dev -e DP_CERT_PASS=123xyz \
--name my-app --net app-web  \
--mount source=logs,target=/etc/logs --mount source=web-data,target=/web-data \
--mount source=dp-certs,target=/etc/ssl/dotnet \
--restart always my-app:1.0.0

2 个答案:

答案 0 :(得分:1)

此问题已解决,方法是添加工作目录/ app并在其中复制文件。但是我仍然不确定为什么它可以在2.0而不是2.1上运行,以及为什么它可以在Windows的Docker而不是Centos的Docker上运行。

答案 1 :(得分:0)

您只需要在Dockerfile中添加此“ WORKDIR / app”

我正在编译dotnet core 2.2,并将其打包在运行于CentOS7服务器上的Docker上,例如,请参阅我的Dockerfile,它对我来说很好用:

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-dotnetcore-sdk
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2

WORKDIR /app
COPY --from=build-dotnetcore-sdk /app/out .

ENTRYPOINT dotnet poc-dotnet-core-mvc.dll