لقد قمت مؤخرًا بترقية مشروعات تطبيقات الويب .NET الأساسية إلى .NET Core 2.1 ، باتباع دليل الترقية المقترح.
قمت أيضًا بتحديث ملف Dockerfiles الخاص بي - واحد لاستخدام صورة وقت تشغيل جبال الألب كقاعدة ، وواحد لاستخدام صورة وقت تشغيل aspnet القياسية كقاعدة. ومع ذلك ، عند تشغيلها على مضيف Docker يعمل على Centos 7.4 ، يفشلون على الفور برسالة "تم رفض الوصول إلى المسار '/ proc / 1 / map_files". يتم إنشاء الصور على نفس الجهاز الذي تعمل عليه.
عند إنشائه وتشغيله على نظام Windows ، لا توجد مشكلة. عندما يتم استيراد الصور التي تم إنشاؤها على Centos إلى Docker لنظام التشغيل Windows ، فإنها تعمل بشكل جيد. تنشأ هذه المشكلة فقط على مضيف عامل الميناء Centos.
لقد رفعت مشكلة في Github هنا ، ووجدت مشكلة مماثلة هنا ، ولكن الحل الوحيد المقدم هو استخدام دليل عمل (حاولت ذلك ولم ينجح).
لا توجد فكرة عما يحدث هنا ولكن آمل أن يكون هناك شخص قد واجه هذا من قبل.
ملفات عامل الميناء هي
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 -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