Cara Gampang Kita Deploy Project .NET C# Pakai Docker

Share
Cara Gampang Kita Deploy Project .NET C# Pakai Docker
Photo by Krishna Pandey/Unsplash

Pernah nggak sih kita ngerasa pusing banget waktu mau kasih lihat hasil kerjaan kita ke klien atau pas mau deploy project .NET C# ke server? Masalah yang paling klasik biasanya adalah kalimat sakti yang bunyinya di laptop saya bisa kok tapi pas di server malah berantakan. Nah disinilah kita butuh solusi yang asik dan nggak bikin darah tinggi yaitu pakai Docker. Kita semua tahu kalau urusan deploy kadang jadi momok menakutkan buat para developer apalagi kalau library yang kita pakai di laptop ternyata beda versi sama yang ada di server. Dengan Docker kita bisa bungkus semua kebutuhan project kita mulai dari runtime sampai library tambahan ke dalam satu paket yang rapi dan siap jalan di mana saja. Strategi ini bikin hidup kita jadi lebih tenang dan bisa fokus ngoding fitur baru tanpa perlu mikirin settingan server yang ribet banget.

Langkah pertama yang harus kita lakukan tentu saja adalah kenalan dulu sama yang namanya containerization. Bayangin Docker itu kayak kotak bekal yang sudah lengkap isinya mulai dari nasi lauk sampai sendok garpu. Jadi pas kita bawa ke mana pun kita nggak perlu bingung nyari piring atau sendok lagi karena semuanya sudah ada di dalam kotak itu. Di dunia .NET C# konsep ini sangat membantu karena ekosistem .NET punya banyak dependensi yang kadang versinya harus spesifik banget. Kalau kita sudah pakai Docker kita nggak perlu lagi install SDK atau runtime yang aneh aneh di server tujuan. Cukup install Docker saja maka project kita sudah pasti bisa jalan dengan mulus tanpa drama.

Sebelum kita mulai eksekusi ada baiknya kita pastiin dulu kalau Docker Desktop sudah terpasang dengan manis di laptop kita. Buat kita yang pakai Windows atau Mac tinggal download saja installernya dan ikuti petunjuknya sampai selesai. Pastikan juga project .NET C# kita sudah siap dan bisa jalan dengan normal di lokal. Kita bisa pakai project web API atau web app biasa sebagai bahan percobaan. Yang paling penting kita sudah paham struktur folder project kita sendiri supaya nanti pas bikin instruksi buat Docker kita nggak bingung nentuin lokasi filenya.

Sekarang mari kita masuk ke bagian inti yaitu membuat sebuah file bernama Dockerfile tanpa ekstensi apa pun di folder utama project kita. Dockerfile ini sebenarnya cuma kumpulan instruksi atau resep masakan yang bakal dibaca sama Docker buat ngebangun image project kita. Di dalam file ini kita bakal nulis beberapa tahap penting. Tahap pertama biasanya kita ambil base image resmi dari Microsoft. Kita bisa pakai image buat SDK kalau mau ngebuild projectnya dan image buat ASP.NET runtime kalau cuma mau jalanin aplikasinya. Kenapa dibedain? Supaya ukuran image final kita nggak kegedean. Bayangin kalau kita bawa semua peralatan tukang cuma buat benerin satu paku pasti capek banget kan? Makanya kita cuma ambil yang perlu saja di hasil akhirnya.

Proses yang kita pakai ini biasanya disebut dengan istilah multi stage build. Ini rahasia biar image Docker kita tetap ramping dan asik buat dideploy. Pertama kita pakai stage build buat narik semua library pakai perintah dotnet restore lalu kita compile kodenya pakai dotnet publish. Hasil dari publish ini biasanya cuma berupa file DLL dan file statis lainnya yang sudah siap jalan. Setelah itu kita pindah ke stage final yang isinya cuma runtime saja lalu kita copy hasil publish tadi ke situ. Dengan cara ini image kita nggak bakal berat sama source code asli atau file sampah sisa kompilasi yang nggak perlu dibawa ke server produksi.

Setelah Dockerfile kita sudah siap sekarang saatnya kita panggil perintah sakti di terminal atau command prompt. Kita bisa pakai perintah docker build lalu kasih nama buat image kita supaya gampang diingat. Jangan lupa tambahkan titik di akhir perintah buat kasih tahu Docker kalau lokasinya ada di folder sekarang. Proses ini mungkin bakal makan waktu agak lama di awal karena Docker harus download image dari internet tapi buat kedua kalinya pasti bakal ngebut banget karena ada fitur caching yang pintar banget. Docker bakal tahu bagian mana yang berubah dan bagian mana yang masih sama jadi dia nggak bakal download ulang semuanya dari nol.

Kalau proses build sudah selesai dan nggak ada error yang muncul itu tandanya image project kita sudah lahir ke dunia. Kita bisa cek daftar imagenya pakai perintah docker images buat mastiin kalau nama project kita sudah ada di sana. Sekarang pertanyaannya bagaimana cara kita jalanin project itu? Gampang banget kita tinggal pakai perintah docker run. Tapi ingat kita harus atur yang namanya port mapping. Biasanya aplikasi web jalan di port delapan puluh atau lima ribu tapi di laptop kita mungkin mau pakai port lain. Kita bisa mapping port di laptop kita ke port di dalam container supaya kita bisa akses lewat browser kesayangan kita.

Misalnya kita mau akses project kita lewat localhost port delapan ribu delapan puluh maka kita tinggal set saja pengaturannya pas mau jalanin container. Begitu perintahnya dieksekusi kita bisa langsung buka browser dan ketik alamat localhost tadi. Kalau halaman web kita muncul dengan gagah perkasa berarti selamat karena kita sudah berhasil melakukan deploy project .NET C# pakai Docker di lingkungan lokal. Rasanya asik banget kan liat aplikasi kita jalan di dalam container yang terisolasi tapi tetap bisa kita akses dengan gampang?

Satu hal lagi yang bikin Docker ini asik buat developer adalah kemudahan dalam mengatur environment variables. Kadang kita punya settingan database yang beda antara di laptop sama di server. Kalau dulu kita mungkin harus ganti ganti file appsettings json yang berisiko banget bakal lupa atau salah ketik. Tapi dengan Docker kita bisa masukin settingan itu langsung pas kita jalanin containernya. Jadi file konfigurasi kita tetap aman dan rapi tanpa perlu banyak perubahan manual yang bikin pusing. Ini juga sangat membantu kalau kita kerja dalam tim yang isinya banyak orang karena standar pengaturannya jadi lebih jelas dan terukur.

Tapi tunggu dulu jangan senang dulu karena perjalanan kita belum selesai sampai di sini. Kita juga perlu tahu soal yang namanya dockerignore. File ini fungsinya mirip kayak gitignore yaitu buat ngasih tahu Docker file mana saja yang nggak boleh ikut dibawa pas proses build. Biasanya folder bin atau obj yang isinya hasil kompilasi lokal nggak perlu dibawa bawa karena bakal bikin image jadi kotor dan berat. Dengan pakai dockerignore kita bisa mastiin kalau proses build kita benar benar bersih dan profesional. Ini adalah tips kecil tapi dampaknya besar banget buat performa dan kebersihan project kita ke depannya.

Gimana kalau project kita makin gede dan butuh database atau layanan lain? Tenang saja karena ada yang namanya Docker Compose. Ini ibaratnya kayak dirigen musik yang ngatur banyak container supaya bisa main bareng dengan harmonis. Kita tinggal bikin satu file yml yang isinya daftar layanan apa saja yang kita butuhin misalnya ada web api kita terus ada database SQL Server atau PostgreSQL. Dengan satu perintah docker compose up saja semua layanan itu bakal langsung jalan barengan dan sudah otomatis saling kenal satu sama lain. Kita nggak perlu lagi ribet setting koneksi antar container secara manual yang sering bikin error nggak jelas.

Keunggulan lain pakai Docker buat project .NET C# adalah kemudahan dalam melakukan scale up. Kalau tiba tiba trafik aplikasi kita meledak dan server sudah mulai ngos ngosan kita tinggal tambah saja jumlah containernya. Docker barengan sama teknologi orkestrasi lainnya bakal bantu kita buat bagi bagi beban kerja dengan sangat adil. Ini yang bikin aplikasi kita jadi punya daya tahan tinggi atau bahasa kerennya high availability. Sebagai developer zaman sekarang punya skill Docker ini benar benar jadi nilai tambah yang bikin kita makin pede pas mau ngelamar kerja atau pas lagi diskusi teknis bareng tim.

Selain urusan teknis ada sisi psikologis juga yang bikin kita lebih tenang pas pakai Docker. Kita jadi nggak takut lagi buat nyoba library baru atau upgrade versi .NET karena kalau ternyata ada yang rusak kita tinggal hapus saja containernya dan balik lagi ke image yang lama. Nggak ada ceritanya server kita jadi kotor gara gara banyak sisa instalasi yang gagal. Semua prosesnya terisolasi dengan rapi dan bersih. Ini beneran cara paling asik buat menjaga kesehatan mental seorang developer yang sering dikejar deadline tapi tetap mau hasil yang maksimal.

Terakhir jangan lupa buat selalu update pengetahuan kita soal image dasar yang disediakan Microsoft. Mereka rajin banget rilis update buat keamanan dan performa. Jadi pastikan kita selalu pakai tag versi yang terbaru atau yang versi long term support supaya project kita tetap aman dari celah keamanan yang berbahaya. Membiasakan diri buat baca dokumentasi resmi juga sangat disarankan karena di sana banyak banget tips optimasi yang mungkin belum banyak diketahui orang umum.

Nah itulah cara gampang buat kita deploy project .NET C# pakai Docker yang bisa langsung kita praktikkan sekarang juga. Mulai dari bikin Dockerfile yang simpel sampai pakai Docker Compose buat kebutuhan yang lebih kompleks semuanya terasa lebih menyenangkan kalau kita tahu caranya. Jangan pernah takut buat eksplorasi lebih jauh karena dunia container ini luas banget dan penuh dengan fitur fitur keren yang bakal bikin kerjaan kita makin efisien. Terus semangat ngoding dan jangan lupa buat bagiin pengalaman asik kita ini ke teman teman developer lainnya biar kita semua bisa maju bareng bareng dalam dunia teknologi yang super cepat ini. Sampai ketemu di tips dan tutorial berikutnya yang nggak kalah seru dan pastinya bermanfaat buat karir kita semua. Selamat mencoba dan semoga project kita semua sukses besar tanpa ada kendala yang berarti pas proses deploy nanti.

Read more