مدیریت هوشمند Migrationها در EF Core با Docker و EF Tools
در این روش، شما EF Core Tools را مستقیماً داخل Docker نصب میکنید، که به شما امکان میدهد migrationها را بدون نیاز به نصب ابزارهای اضافی روی سیستم شخصی خود، کاملاً داخل کانتینر مدیریت کنید. این روش برای CI/CD و محیطهای تولیدی عالی است، چون همه چیز ایزوله و مستقل داخل کانتینر انجام میشود.
مراحل نصب EF Core Tools در Docker و اجرای migrationها
۱. تنظیم Dockerfile
در Dockerfile، EF Core Tools را نصب میکنیم تا migrationها بهطور خودکار داخل کانتینر اجرا شوند. هر بار که کانتینر ساخته و اجرا میشود، migrationها اعمال و دیتابیس آماده استفاده میشود.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["YourProject/YourProject.csproj", "YourProject/"]
RUN dotnet restore "YourProject/YourProject.csproj"
COPY . .
RUN dotnet build "YourProject/YourProject.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "YourProject/YourProject.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# نصب EF Core Tools و اجرای migrationها
RUN dotnet tool install --global dotnet-ef
ENV PATH="$PATH:/root/.dotnet/tools"
RUN dotnet ef database update
ENTRYPOINT ["dotnet", "YourProject.dll"]
۲. ساخت و اجرای کانتینر
کافی است دستورات زیر را اجرا کنید تا کانتینر ساخته و اپلیکیشن شما اجرا شود:
docker build -t your-image-name .
docker run -d your-image-name
مزایای این روش
▫️سادگی و انعطاف در CI/CD:
عملیات migrationها خودکار اجرا میشوند و برای محیطهای CI/CD فوقالعاده مناسب هستند.
▫️استقلال از محیط توسعه:
نیاز به ابزارهای اضافی روی سیستم شخصی نیست؛ همه چیز داخل Docker انجام میشود.
▫️دیتابیس همیشه بهروز:
هر بار که کانتینر اجرا شود، migrationها اعمال میشوند و دیتابیس سینک میماند.
این روش یه راهکار راحت و ایزوله برای مدیریت migrationهاست و کار با Docker را هم سادهتر میکند.
🔗 برای مطالعه بیشتر میتوانید به این لینک مراجعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
________
>>Click here to continue<<
