نحوه docker کردن برنامه ASP.NET Core

دلایل زیادی وجود دارد که ممکن است شما بخواهید برنامه ASP.NET Core را داکر کنید. اما در نهایت این کار باعث راحتی شما می‌شود. این کار برای جداسازی اجزا عالی است، مخصوصا اگر در حال ساخت یک میکروسرویس یا برنامه‌ریزی برای اعمال برنامه خود روی فضای ابری هستید. بنابراین اگر می‌خواهید کارتان راحت‌تر شود، این آموزش را جهت یادگیری نحوه داکر کردن برنامه ASP.NET Core دنبال کنید.

نحوه docker کردن برنامه ASP.NET Core

شروع کار: داکر کردن برنامه ASP.NET Core
1. یک برنامه ASP.NET Core Web Application جدید در ویژوال استودیو 2017 ایجاد کرده و OK را کلیک کنید:

2. در صفحه بعد، (Web Application (Model-View-Controller یا هر نوعی که می‌خواهید را انتخاب کنید، در حالی که مطمئن شوید ASP.NET Core 2.0 از منوی کشویی انتخاب شده است. سپس چک باکس  Enable Docker Support را تیک بزنید. فعال کردن این گزینه لیست کشویی OS را فعال می‌کند. در اینجا Windows را انتخاب کرده و روی دکمه OK کلیک کنید:

اگر پیام زیر را مشاهده کردید، باید محفظه (container) یا همان کانتینر را به Windows تغییر دهید، این پیام احتمالا به این دلیل است که شما کانتینر پیش‌فرض را روی Docker as Linux تنظیم کرده‌اید:

اگر در taskbar روی آیکون Docker راست کلیک کنید، می‌بینید که گزینه‌ای برای فعال‌سازی کانتینر Windows وجود دارد. می‌توانید با کلیک بر روی گزینه switch to Windows containers آن را تغییر دهید:

با توجه به سرعت خط شما و تنظیمات سخت‌افزاری‌ کامپیوترتان، تغییر به Windows containers ممکن است چند دقیقه زمان صرف کند تا کامل شود. با این وجود شما روی این گزینه کلیک نمی‌کنید، ویژوال استودیو هنگام انتخاب پلت‌فرم OS به عنوان ویندوز، از شما می خواهد که آن را به Windows containers تغییر دهید. دلیلی وجود دارد که ما Windows containers را به عنوان سیستم عامل انتخاب نمی‌کنیم. این دلیل را در مقاله های بعدی، هنگام کار با Docker Hub و ایجاد خودکار آن، روشن می‌کنیم.

بعد از اینکه برنامه ASP.NET Core خود را ساختید، در Solution Explorer پروژه خود موارد زیر را مشاهده خواهید کرد:

پشتیبانی داکر که با ویژوال استودیو اضافه شده است نه تنها در قالب Dockerfile است، بلکه در قالب اطلاعات پیکربندی داکر نیز قرار دارد. این اطلاعات در فایل سراسری docker-compose.yml در سطح سولوشن هستند:

3. بر روی Dockerfile در سولوشن کلیک کنید، می‌بینید که چندان پیچیده به نظر نمی‌رسد. به یاد داشتته باشید که Dockerfile فایلی است که image شما را ایجاد می‌کند. image یک قالب فقط خواندنی است که نحوه ایجاد یک کانتینر داکر را مشخص می‌کند. بنابراین، Dockerfile شامل مراحل مورد نیاز برای تولید image و اجرای آن است. دستورالعمل‌ها در Dockerfile لایه‌ها را در image ایجاد می‌کنند. این بدان معناست که اگر هر چیزی در Dockerfile تغییر کند، هنگامی که image بازسازی (rebuilt) می‌شود، تنها لایه‌هایی که تغییر کرده‌اند بازسازی خواهند شد. Dockerfile به شرح زیر است:

FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base 
WORKDIR /app 
EXPOSE 80 
 
FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build 
WORKDIR /src 
COPY *.sln ./ 
COPY DockerApp/DockerApp.csproj DockerApp/ 
RUN dotnet restore 
COPY . . 
WORKDIR /src/DockerApp 
RUN dotnet build -c Release -o /app 
 
FROM build AS publish 
RUN dotnet publish -c Release -o /app 
 
FROM base AS final 
WORKDIR /app 
COPY --from=publish /app . 
ENTRYPOINT ["dotnet", "DockerApp.dll"]

وقتی نگاهی به منوی ویژوال استودیو 2017 می‌اندازید، متوجه می‌شوید که دکمه Run به Docker تغییر کرده است:

4. روی دکمه Docker برای دیباگ کردن برنامه ASP.NET Core کلیک کنید، متوجه خواهید شد که چنیدن Pop up  در پنجره خروجی وجود دارند. از موارد خاص آن آدرس IP است که در انتها نشان داده می‌شود. (برای ما http://172.24.12.112 است، ممکن است برای شما متفاوت باشد):

وقتی مرورگر راه‌اندازی می‌شود، می‌بینید که برنامه ASP.NET Core در آدرس IP لیست شده در پینجره خروجی قبلی است. حالا برنامه ASP.NET Core در داخل یک Windows Docker اجرا می‌شود:

این فوق‌‌العاده است و واقعا شروع کار با آن آسان می‌باشد. اما برای داکر کردن یک برنامه ASP.NET Coreای که از قبل وجود دارد باید چه کار کرد؟

نحوه افزودن پشتیبانی Docker به برنامه NET Core. موجود

تصور کنید یک برنامه ASP.NET Core بدون پشتیبانی داکر دارید. برای افزودن پشتیبانی داکر به این برنامه موجود، به سادگی آن را از منوی محتوا اضافه کنید:

برای افزودن پشتیبانی داکر به یک برنامه ASP.NET Coreای که از قبل موجود است، باید مراحل زیر را انجام دهید:

1. روی پروژه در Solution Explorer کلیک راست کنید.

2. روی آیتم Add کلیک کنید.

3. از منوی باز شده روی Docker Support کلیک کنید:

4. حالا ویژوال استودیو 2017 از شما می‌پرسد که سیستم عامل هدف چه خواهد بود؟ ما قصد داریم تا ویندوز را انتخاب کنیم:

5. بعد از کلیک روی دکمه OK، ویژوال استودیو 2017 شروع به اضافه کردن پشتیبانی داکر به پروژه شما می‌کند:

در حقیقت بسیار ساده است که برنامه‌های ASP.NET Coreای ایجاد کنید که پشتیبانی داکر را داشته باشند، و حتی آسان‌تر از آن پشتیبانی داکر را به برنامه‌های ASP.NET Core موجود اضافه کنید.

در نهایت اگر به هر مشکلی، مثل مشکلات دسترسی به فایل، برخورد کردید، مطمئن شوید که نرم‌افزار آنتی ویروس از اسکن کردن Dockerfile شما خودداری کند. همچنین مطمئن شوید که ویژوال استودیو را در حالت Administrator اجرا کرده باشید.