Mengkustomisasi citra Docker untuk menjalankan aplikasi web Anda sendiri

Selesai

Docker Hub adalah sumber citra yang sangat baik agar Anda mulai membuat aplikasi kontainer Anda sendiri. Anda dapat mengunduh gambar yang menyediakan fungsionalitas dasar yang Anda butuhkan, lalu melapisi aplikasi Anda sendiri di atasnya untuk membuat gambar kustom baru. Anda dapat mengotomatiskan langkah-langkah untuk proses ini dengan menulis Dockerfile.

Dalam skenario toko pakaian online, perusahaan telah memutuskan bahwa Docker adalah jalan ke depan. Langkah selanjutnya adalah menentukan cara terbaik untuk mengkontainerisasi aplikasi web Anda. Perusahaan berencana untuk membangun banyak aplikasi menggunakan ASP.NET Core. Anda telah memperhatikan bahwa Docker Hub berisi gambar dasar yang menyertakan kerangka kerja ini. Sebagai bukti konsep, Anda ingin memulai dengan gambar dasar ini dan menambahkan kode untuk salah satu aplikasi web guna membuat gambar kustom baru. Anda juga ingin proses ini dapat diulang dengan mudah, sehingga dapat diotomatisasi setiap kali Anda merilis versi baru aplikasi web.

Di unit ini, Anda akan mempelajari cara membuat gambar Docker kustom dan bagaimana Anda dapat mengotomatiskan proses dengan menulis Dockerfile.

Membuat citra kustom dengan Dockerfile

Untuk membuat gambar Docker yang berisi aplikasi, biasanya Anda akan mulai dengan mengidentifikasi gambar dasar tempat Anda menambahkan file dan informasi konfigurasi. Proses mengidentifikasi gambar dasar yang sesuai biasanya dimulai dengan pencarian gambar di Docker Hub. Anda menginginkan gambar yang sudah berisi kerangka kerja aplikasi dan semua utilitas dan alat distribusi Linux, seperti Ubuntu atau Alpine. Misalnya, jika Anda memiliki aplikasi ASP.NET Core yang ingin Anda kemas ke dalam kontainer, Microsoft menerbitkan citra yang disebut mcr.microsoft.com/dotnet/core/aspnet yang sudah berisi runtime Core ASP.NET.

Citra dapat disesuaikan dengan memulai kontainer dengan citra dasar dan membuat perubahan padanya. Perubahan biasanya melibatkan aktivitas seperti menyalin file ke dalam kontainer dari sistem file lokal dan menjalankan berbagai alat dan utilitas untuk mengkompilasi kode. Setelah selesai, Anda menggunakan docker commit perintah untuk menyimpan perubahan ke gambar baru.

Menyelesaikan proses di atas secara manual memakan waktu dan rawan kesalahan. Anda dapat membuat skrip dengan bahasa skrip seperti Bash, tetapi Docker menyediakan cara yang lebih efektif untuk mengotomatiskan pembuatan gambar melalui Dockerfile.

Dockerfile adalah file teks biasa yang berisi semua perintah yang diperlukan untuk membangun gambar. Dockerfiles ditulis dalam bahasa pembuatan skrip minimal yang dirancang untuk membangun dan mengonfigurasi gambar. Dockerfiles mendokumentasikan operasi yang diperlukan untuk membangun gambar, dimulai dengan gambar dasar.

Contoh berikut menunjukkan Dockerfile yang membangun aplikasi .NET Core 2.2 dan mengemasnya ke dalam citra baru.

FROM mcr.microsoft.com/dotnet/core/sdk:2.2
WORKDIR /app
COPY myapp_code .
RUN dotnet build -c Release -o /rel
EXPOSE 80
WORKDIR /rel
ENTRYPOINT ["dotnet", "myapp.dll"]

Dalam file ini, operasi berikut berlangsung:

Perintah Perbuatan
DARI Mengunduh gambar yang ditentukan dan membuat kontainer baru berdasarkan gambar ini.
WORKDIR Mengatur direktori kerja saat ini dalam kontainer, yang digunakan oleh perintah berikutnya.
COPY Menyalin file dari komputer host ke kontainer. Argumen pertama (myapp_code) adalah file atau folder di komputer host. Argumen kedua (.) menentukan nama file atau folder untuk bertindak sebagai tujuan dalam kontainer. Dalam hal ini, tujuannya adalah direktori kerja saat ini (/app).
RUN Menjalankan perintah dalam kontainer. Argumen ke perintah RUN adalah perintah baris perintah.
EXPOSE Membuat konfigurasi dalam gambar baru yang menentukan port mana yang akan dibuka saat kontainer berjalan. Jika kontainer menjalankan aplikasi web, biasanya EXPOSE port 80.
ENTRYPOINT Menentukan operasi yang harus dijalankan kontainer saat dimulai. Dalam contoh ini, perintah ini menjalankan aplikasi yang baru dibangun. Anda menentukan perintah yang ingin Anda jalankan dan setiap argumennya sebagai array string.

Berdasarkan konvensi, aplikasi yang dimaksudkan untuk dikemas sebagai citra Docker biasanya memiliki Dockerfile yang terletak di akar kode sumbernya, dan hampir selalu dinamai Dockerfile.

Perintah docker build membuat citra baru dengan menjalankan Dockerfile. Sintaks perintah ini memiliki beberapa parameter:

  • Bendera -f menunjukkan nama Dockerfile yang akan digunakan.
  • Bendera -t menentukan nama gambar yang akan dibuat; dalam contoh ini, myapp:v1.
  • Parameter akhir, ., menyediakan konteks build untuk file sumber untuk perintah COPY: kumpulan file pada komputer host yang diperlukan selama proses build.
docker build -t myapp:v1 .

Di balik layar, perintah docker build membuat kontainer, menjalankan perintah di dalamnya, lalu melakukan perubahan pada gambar baru.