انتشار پروژه های ASP.net Core با استفاده از Docker

به نام خدا. در این آموزش قصد دارم نحوه ی انتشار پروژه های ASP.net Core را با استفاده از Docker به منظور راه اندازی در هر سیستم عاملی خدمتتان آموزش دهم.

کدهای این آموزش را می توانید از لینک زیر به صورت رایگان دانلود و استفاده کنید.

کدهای این آموزش در آدرس زیر قابل مشاهده و دانلود است
https://github.com/MohammadMoeinFazeli/ASP.NetCore-Docker

برای شروع باید ابتدا یک پروژه ی ASP.net Core ایجاد کنید. بدین منظور می توانید از آموزش زیر استفاده کنید:

ایجاد اولین پروژه Web API در ASP.net Core با Visual Studio 2019

همچنین Docker را روی سیستم عامل خود نصب کنید. بدین منظور می توانید به این لینک مراجعه کنید و از منوی کناری سیستم عامل خود را انتخاب و مراحل نصب را دنبال کنید.

ایجاد Dockerfile

خوب حالا نیاز به یک فایل با عنوان Dockerfile بدون هیچ پسوند و پیشوندی دارید. این فایل را در پوشه پروژه ی خود ایجاد کنید. Dockerfile به منظور ایجاد Imageهای docker مورد استفاده قرار می گیرد و حاوی دستورالعمل ها و مراحل ایجاد Image دلخواه است.

Imageهای docker عملا نسخه های سبک شده ای از سیستم عامل های مختلف به همراه ملزمات دیگری هستند که برای اهداف خاص استفاده می شوند. برای مثال یک image داکر برای راه اندازی دیتابیس mysql وجود دارد که حاوی یک نسخه ی سبک شده از سیستم عامل لینوکس به همراه دیتابیس mysql که روی آن نصب شده است می باشد.

ما در این آموزش فرض می کنیم نام پروژه ی شما (همانند source code ارائه شده برای این آموزش) DockerASPnetCore است. اکنون دستورالعمل های زیر را در Dockerfile که ایجاد کردید قرار دهید:

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch

RUN mkdir /app
WORKDIR /app

COPY DockerASPnetCore.csproj .
RUN dotnet restore

COPY . .
RUN dotnet publish -c Release -o out

EXPOSE 5000/tcp
CMD ["dotnet", "out/DockerASPnetCore.dll"]

در این دستورالعمل ها ما از Image پایه ی mcr.microsoft.com/dotnet/core/sdk:2.2-stretch استفاده کردیم که مربوط به ASP.net Core 2.2 است. اگر از نسخه ی دیگری از ASP.net Core استفاده می کنید لطفا Image مناسب را از این لینک انتخاب و در فایل Dockerfile خود جایگیزین کنید. حجم این Image تقریبا 1.7GB است پس لطفا برای pull شدن آن کمی صبر کنید.

در قدم بعد با استفاده از دستور RUN mkdir /app یک پوشه با نام app درون Image مورد نظر ایجاد می شود. سپس با دستور WORKDIR /app پوشه ی جاری را به app تغییر می دهد. آنگاه فایل DockerASPnetCore.csproj پروژه ی ما را با دستور بعدی در Image کپی می کند. پس از آن با اجرای دستور RUN dotnet restore ملزومات لازم برای پروژه ما از Nuget گرفته می شود.

در قدم بعد نیز کل فایل های پروژه ما درون پوشه ی app در ایمیج کپی می شود و پس از آن با اجرای دستور RUN dotnet publish -c Release -o out پروژه ما build شده و در پوشه ی out منتشر می شود.

سپس با اجرای دستور EXPOSE 5000/tcp امکان ارتباط پورت 5000 مربوط به Image با بیرون وجود خواهد داشت. و در نهایت با اجرای فایل out/DockerASPnetCore.dll توسط فرمان dotnet (که به محض ایجاد یک container از روی image اجرا می شود) پروژه ی ما را اجرا می کند.

ایجاد Docker Image

در قدم بعد باید از روی Dockerfile یک Image داکر ایجاد کنیم. بدین منظور دستور زیر را در خط فرمان در حالی که در پوشه ی پروژه ی خود هستید اجرا کنید:

docker build -t aspnet-app:2.2 .

به جای aspnet-app:2.2 می توانید از هرنام و tag دیگری برای نام image خود استفاده کنید. پس از Image مورد نظر توسط داکر ایجاد شده و تمامی فرامین شما در Dockerfile به ترتیب اجرا می شود. اکنون می توانید با اجرای فرمان docker images در خط فرمان لیست imageهای خود را مشاهده کنید.

ایجاد Container و اجرای پروژه

اکنون که Image شما ایجاد شد، می توانید با اجرای دستور زیر در خط فرمان یک Container از روی آن ایجاد کرده و پروژه ی خود را اجرا کنید:

docker run -d -t -p 80:5000 --name app aspnet-app:2.2

در صورتی که پروژه ی شما به صورت پیش فرض روی پورتی به جز 80 در حال اجراست لطفا مقدار 80 را به شماره پورت پروژه ی خود تغییر دهید. همچنین به جای app می توانید از هر نام دیگری برای container خود استفاده کنید.

نکته: در برخی موارد نیاز است برای اجرای برخی از دستورات docker خط فرمان خود را به صورت Run as adminstrator باز کنید (کاربران linux نیاز به استفاده از دستور sudo دارند)

برای مشاهده ی log پروژه ی خود می توانید دستور docker logs app را در خط فرمان اجرا کنید.

اکنون پروژه در حال اجراست. با مراجعه به آدرس http://localhost:5000/api/Values از صحت اجرای پروژه اطمینان حاصل کنید.

اگر سوالی داشتید لطفا آن را در بخش دیدگاه های همین پست مطرح بفرمایید. مجددا اعلام می کنم که کدهای این پروژه از این آدرس به صورت رایگان قابل دانلود و استفاده است.

موفق باشید. التماس دعا

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *