Docker Nedir ve ASP.NET Core ile Neden Kullanılır?
ASP.NET Core ise Microsoft’un açık kaynak kodlu ve çapraz platform desteği sunan web framework’üdür. Docker ile ASP.NET Core'u bir araya getirdiğinizde, hızlı bir şekilde yüksek verimli ve taşınabilir uygulamalar geliştirebilirsiniz.
Docker ile ASP.NET Core Uygulamanızı Yayına Alma Adımları
Docker’ı bilgisayarınıza kurarak başlıyoruz. Docker’ın resmi sitesinden uygun sürümü indirip kurulum işlemini tamamlayabilirsiniz. Kurulum sonrası, terminal veya komut istemcisine `docker --version` yazarak Docker’ın doğru şekilde yüklendiğini doğrulayın.
2. ASP.NET Core Projesi Oluşturma
ASP.NET Core uygulamanızı Visual Studio veya Visual Studio Code ile kolayca oluşturabilirsiniz. Yeni bir proje başlatın ve temel bir ASP.NET Core Web API uygulaması oluşturun. Uygulamanızın çalıştığından emin olduktan sonra, Docker ile yayına almak için hazır hale getirebilirsiniz.
3. Dockerfile Oluşturma
Uygulamanız için bir Dockerfile oluşturmanız gerekecek. Dockerfile, konteynerinizi nasıl oluşturacağınıza dair adımları içeren bir betik dosyasıdır. Aşağıdaki örnek Dockerfile, ASP.NET Core uygulamanızın nasıl Docker konteyneri içine yerleştirileceğini gösterir:
# .NET Core SDK imajını kullanıyoruz
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
# .NET Core SDK imajını kullanarak uygulama dosyalarını kopyalıyoruz
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MyApp/MyApp.csproj", "MyApp/"]
RUN dotnet restore "MyApp/MyApp.csproj"
COPY . .
WORKDIR "/src/MyApp"
RUN dotnet build "MyApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyApp.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Yukarıdaki Dockerfile, ASP.NET Core uygulamanızın bir Docker konteynerine nasıl paketleneceğini gösteriyor. Burada dikkat edilmesi gereken nokta, uygulamanın derlenip yayına alınan dosyaların doğru bir şekilde konteyner içine kopyalanmasıdır.
4. Docker İmajını Oluşturma
Dockerfile’ı oluşturduktan sonra, terminalde aşağıdaki komutla Docker imajınızı oluşturabilirsiniz:
docker build -t myapp .
Bu komut, Dockerfile’ı kullanarak bir imaj oluşturur ve bu imajı `myapp` adıyla etiketler.
5. Docker Konteyneri Çalıştırma
İmajı oluşturduktan sonra, aşağıdaki komutla Docker konteynerinizi çalıştırabilirsiniz:
docker run -d -p 8080:80 --name myapp-container myapp
Bu komut, `myapp` imajını alır, 8080 portunu yerel makinenizle bağlar ve konteyneri arka planda çalıştırır.
Yaygın Hatalar ve Çözümleri
Docker konteynerinizi başlatırken port çakışmasıyla karşılaşabilirsiniz. `8080:80` gibi port yönlendirmelerinde, yerel makinenizde zaten bu portu kullanan bir başka uygulama olabilir. Portları değiştirmek, örneğin `docker run -d -p 5000:80` komutunu kullanmak bu sorunu çözebilir.
2. Eksik Bağımlılıklar
Dockerfile’daki `COPY` ve `RUN` komutlarını yanlış yazmanız, eksik bağımlılıklarla karşılaşmanıza neden olabilir. Uygulamanın çalışabilmesi için tüm bağımlılıkların doğru sırayla yüklendiğinden emin olun.
3. Uygulama Çalışmıyor
Uygulama Docker konteynerinde çalışmıyorsa, hatanın kaynağını bulmak için Docker loglarını inceleyebilirsiniz. `docker logs
4. Veritabanı Bağlantısı Sorunları
Eğer veritabanı kullanıyorsanız, veritabanı bağlantı dizelerinin doğru olduğundan emin olun. Docker içinde çalışan bir veritabanı ile bağlantı kurmak için, veritabanı konteynerinin IP adresini veya Docker’ın `docker-compose` aracı ile daha kolay yapılandırılabilir bağlantı ayarlarını kullanabilirsiniz.
Docker ile Verimliliğinizi Artırın
Birden fazla konteyner çalıştırmanız gerekiyorsa, Docker Compose kullanarak birden fazla servisi yönetebilirsiniz. Bu, özellikle mikro servis mimarisi kullanıyorsanız oldukça faydalıdır.
- CI/CD Entegrasyonu
Docker’ı bir CI/CD sürecine dahil etmek, uygulamanızın her değişikliğini otomatik olarak test edip yayına almanızı sağlar. Jenkins, GitLab CI, veya GitHub Actions gibi araçlarla Docker entegrasyonu yaparak, yayın sürecini daha hızlı ve hatasız hale getirebilirsiniz.