1. Pengantar .NET 8 dan Docker
.NET 8 adalah versi terbaru dari framework .NET yang menyediakan performa tinggi dan fitur modern untuk membangun aplikasi web, desktop, dan layanan backend. Docker adalah platform containerization yang memungkinkan aplikasi berjalan secara konsisten di berbagai lingkungan.
Dalam panduan ini, Anda akan belajar bagaimana menggabungkan kekuatan .NET 8 dan Docker untuk membangun aplikasi yang mudah dikelola, scalable, dan portable.
2. Persiapan Lingkungan Pengembangan
Sebelum memulai, pastikan Anda sudah menginstal beberapa tools berikut:
-
.NET 8 SDK (unduh dari
dotnet.microsoft.com
)
-
Docker Desktop (unduh dari
docker.com
)
-
Editor kode seperti Visual Studio Code atau Visual Studio 2022+
Setelah instalasi, verifikasi dengan menjalankan perintah berikut di terminal:
dotnet --version
docker --version
Pastikan versi yang muncul sesuai dengan yang diharapkan.
3. Membuat Aplikasi .NET 8 Sederhana
Kita akan membuat aplikasi web API sederhana menggunakan .NET 8. Jalankan perintah berikut di terminal:
dotnet new webapi -n MyDockerApp
cd MyDockerApp
dotnet run
Aplikasi akan berjalan di
https://localhost:5001
. Anda dapat membuka browser dan mengakses endpoint API default.
Penjelasan singkat kode:
-
File
Program.cs
berisi konfigurasi aplikasi dan routing API.
-
Folder
Controllers
berisi controller API yang mengatur endpoint.
4. Mengenal Docker dan Manfaatnya
Docker memungkinkan Anda mengemas aplikasi dan semua dependensinya ke dalam sebuah container yang dapat dijalankan di mana saja. Manfaat utama Docker:
-
Konsistensi lingkungan pengembangan dan produksi
-
Isolasi aplikasi dan dependensi
-
Memudahkan deployment dan scaling
5. Membuat Dockerfile untuk Aplikasi .NET 8
Buat file bernama
Dockerfile
di root folder proyek
MyDockerApp
dengan isi berikut:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MyDockerApp.csproj", "./"]
RUN dotnet restore "./MyDockerApp.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "MyDockerApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyDockerApp.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyDockerApp.dll"]
Penjelasan singkat:
-
Stage
base
menggunakan image runtime ASP.NET 8.
-
Stage
build
menggunakan SDK untuk membangun aplikasi.
-
Stage
publish
menghasilkan output release siap deploy.
-
Stage
final
menjalankan aplikasi dari hasil publish.
6. Membangun dan Menjalankan Docker Image
Jalankan perintah berikut di terminal untuk membangun image Docker:
docker build -t mydockerapp:latest .
Setelah selesai, jalankan container dengan perintah:
docker run -d -p 8080:80 --name mydockerappcontainer mydockerapp:latest
Akses aplikasi melalui
http://localhost:8080
di browser Anda.
7. Menggunakan Docker Compose
Docker Compose memudahkan pengelolaan multi-container. Buat file
docker-compose.yml
di root proyek:
version: '3.8'
services:
mydockerapp:
image: mydockerapp:latest
build: .
ports:
- "8080:80"
restart: unless-stopped
Jalankan dengan perintah:
docker-compose up -d
Ini akan membangun dan menjalankan container sesuai konfigurasi.
8. Debugging dan Troubleshooting
Beberapa tips debugging aplikasi .NET 8 di Docker:
-
Gunakan
docker logs mydockerappcontainer
untuk melihat log container.
-
Gunakan
docker exec -it mydockerappcontainer /bin/bash
untuk masuk ke container dan cek file atau konfigurasi.
-
Pastikan port yang dipetakan tidak bentrok dengan aplikasi lain.
-
Periksa file
Dockerfile
dan
docker-compose.yml
untuk kesalahan sintaks.
9. Sumber Belajar dan Source Code
Berikut beberapa sumber belajar dan contoh source code untuk memperdalam pemahaman Anda:
10. Kesimpulan
Dengan mengikuti panduan ini, Anda telah mempelajari dasar-dasar membangun aplikasi .NET 8 dan mengemasnya menggunakan Docker. Anda dapat mengembangkan aplikasi lebih kompleks dan memanfaatkan Docker untuk deployment yang lebih mudah dan konsisten.
Terus eksplorasi fitur .NET 8 dan Docker untuk meningkatkan produktivitas dan kualitas aplikasi Anda.