Created with to build something
Version: 5.0.5
cover-berkenalan-dengan-docker-alat-yang-mempermudah-pekerjaan-devops

Codding

Berkenalan Dengan Docker Alat Yang Mempermudah Pekerjaan DevOps

Docker merupakan platform yang menggunakan virtualisasi tingkat sistem operasi yang memungkinkan percepatan dalam pendistribusian sebuah aplikasi.

Jul 08, 2020

Di lingkungan saya DevOps merupakan seseorang yang mengerti tentang cara melakukan distribusi aplikasi ke infrastruktur, bahasa awamnya orang ini dapat memasang website pada sebuah virtual private server. Kedengarannya menarik, namun sayangnya pada saat anda membuat sebuah virtual private server anda perlu melakukan konfigurasi dan pemasangan aplikasi - aplikasi pendukung agar website yang anda buat bisa bekerja dengan optimal. Pertama kali saya terjun pada dunia DevOps untuk sekedar belajar membangun sebuah forum diskusi agar bisa diakses oleh anggotanya, hal itu adalah hal yang rumit meskipun saya sudah terbiasa dengan prosedur tersebut namun rasanya masih kelihatan rumit.

Beberapa kendala tersebut meliputi bedanya environment development dan production, sebut saja saya membuat aplikasi menggunakan sistem operasi windows dan untuk menjalankan aplikasi tersebut di production saya perlu menyesuaikannya dengan sistem operasi linux. Pada umumnya virtual private server datang dengan sistem operasi linux, gratis adalah alasan saya menggunakan sistem operasi ini karena jika menggunakan windows server mungkin saya akan mengeluarkan dana yang tidak pantas untuk membuat sebuah situs blog.

Melakukan konfigurasi pada VPS juga tergolong rumit, oke jika anda terbiasa mungkin tidak masalah hanya saja saya sedikit menganggap ini hal yang rumit karena kita membutuhkan cli untuk menjalankan perintah. Hal ini yang mungkin membuat saya tidak bisa buru - buru dalam mendistribusikan aplikasi yang saya miliki ke server, butuh waktu dan mungkin bisa saja anda bisa melewati salah satu proses.

Apa itu Docker ?

Saya berkenalan dengan docker pada salah satu playlist yang ada di youtube bernama Belajar Docker untuk Pemula milik channel Programmer Zaman Now, berdasarkan kutipan yang ada di wikipedia dan video pada playlist tersebut saya bisa simpulkan bahwa docker merupakan sebuah platform yang memungkinkan seseorang untuk melakukan pendistribusian aplikasi dengan menggunakan virtualisasi pada tingkat sistem operasi. Aplikasi yang di distribusikan akan ditempatkan pada sebuah image yang nantinya akan dimasukkan ke dalam sebuah container, sifat image yang terdapat pada docker merupakan sebuah project yang telah di bundle dan siap untuk dijalankan sehingga ini image pada docker tidak sama dengan image yang terdapat pada file ISO.

Penggunaan docker memungkinkan anda untuk menggunakan image yang sudah ada untuk di jalankan pada container, secara tidak langsung penggunaan docker dapat membuat pemassangan sebuah aplikasi menjadi lebih simple karena dependensi - dependensi yang dibutuhkan sudah menjadi satu pada image tersebut. Mungkin tantangannya adalah anda perlu melakukan konfigurasi saja, sangat dimungkinkan jika anda tidak perlu memasang dependensi - dependensi tertentu karena sudah masuk ke dalam image, jika anda ingin membuat image sendiri anda juga dapat memanfaatkan Dockerfile sebagai file konfigurasi dalam membuat image baru.

Karena docker berjalan dengan menggunakan virtualisasi tingkat sistem operasi, mungkin anda tidak memerlukan penyesuaian environment sistem operasi karena baik itu berjalan pada sistem operasi linux, windows ataupun macos docker dapat menjalankan aplikasi yang telah kamu tambahkan pada container tanpa khawatir sistem operasi apa yang sedang kamu gunakan.

Memasang Docker

Saat artikel ini ditulis docker hampir mendukung seluruh sistem operasi baik itu pada linux, macos maupun windows. Hanya saja docker pada windows memiliki perbedaan yang lumayan dimana docker akan membutuhkan WSL 2 (Windows Subsystem Linux) untuk menjalankan docker, hal ini dapat dimaklumi karena rata - rata server menggunakan linux sebagai sistem operasi dan windows belum memiliki terminal konsol yang kurang bagus bagi saya.

Docker desktop tersedia pada sistem operasi windows dan macos, sedangkan pada linux hanya tersedia docker engine yang fungsinya sama seperti docker desktop. Jika anda ingin memasang docker saya sarankan untuk membaca situs dokumentasinya, terlebih lagi jika anda menggunakan sistem operasi linux. klik disini untuk melihat dokumentasi pemasangan docker..

alt images Tampilan Docker Desktop

alt images Ketika Melihat Seluruh Container Pada Docker CLI

Memulai Menggunakan Docker

Dalam menggunakan docker anda akan membutuhkan yang namanya image dan container, kedua hal ini agak sulit untuk dipisahkan karena image berfungsi untuk membungkus sebuah project aplikasi atau sebuah aplikasi yang telah dibundle oleh seseorang dan container yang merupakan wadah untuk mengeksekusi image tersebut. Ini mungkin akan terlihat rumit, namun dalam memulai untuk menggunakan docker langkah - langkah ini mungkin bisa dijadikan preferensi yaitu :

  1. Mempersiapkan project yang ingin di distribusikan, pastikan project yang di distribusikan telah siap dalam tahap production.
  2. Mendefinisikan project ke dalam sebuah image yang berarti anda perlu membuat image baru berdasarkan project yang anda buat.
  3. Mendefinisikan image pendukung seperti DBMS atau jika anda menggunakan aplikasi yang membutuhkan reverse proxy pada sebuah web server sangat disarankan untuk mendefinisikan web server secara terpisah.
  4. Mendefinisikan container yang digunakan sebagai tempat untuk mengeksekusi image tersebut.

Membuat Image dengan Dockerfile

Pada tahap ini saya menggunakan adonis yang merupakan project nodejs untuk membuat artikel ini, pada direktori root project adonis saya menambahkan file bernama Dockerfile untuk membuat image adonis.

FROM node:12

WORKDIR /usr/src/app/adonis-docker

COPY . .

RUN npm install

EXPOSE 8010

CMD ["npm", "start"]

Dalam dockerfile saya mendefinisikan node versi 12 sebagai image yang akan digunakan, setelah itu saya mengatur project adonis akan diletakkan pada /usr/src/app/adonis-docker. Docker akan menyalin seluruh file yang terdapat pada project, pada docker anda dapat melakukan ignore pada direktori yang di tidak ingin di salin ke workdir untuk melakukannya buatlah file .dockerignore pada direktori project.

/node_modules

Dockerfile sendiri merupakan salah satu file yang digunakan untuk membuat instruksi pada docker sehingga proses penginstall dependensi yang digunakan, port yang digunakan dan perintah yang akan dijalankan ketika dieksekusi di container diatur pada Dockerfile.

Setelah file Dockerfile telah dibuat maka anda perlu mengeksekusi perintah docker build <namadirektori> --tag namaimage:tagimage, sebagai contoh saya membuat sebuah image dari direktori /apps dengan nama tag adonis:1.0.

alt images

Membuat Container dengan docker-compose

Pada tahap ini anda akan membuat container yang digunakan untuk mengeksekusi image, sebenarnya ada dua cara yang dapat dilakukan dalam membuat container yaitu menggunakan docker cli atau menggunakan docker-compose. Karena artikel ini digunakan untuk pengenalan materi saya akan menggunakan docker-compose untuk memberi tahu bahwa penggunaan docker-compose akan membuat penggunaan docker lebih bagus lagi.

Penggunaan docker-compose bisa bervariasi, anda dapat menggunakan docker-compose pada direktori root project atau menempatkan project yang anda buat pada direktori sedangkan root project digunakan untuk melakukan konfigurasi docker. Hal ini sah - sah saja digunakan tergantung bagaimana kenyamanan pengguna, pada kasus ini saya membuat root directory project sebagai tempat melakukan konfigurasi docker dan sub direktori digunakan untuk menyimpan project adonis dan pengaturan web server.

Untuk menggunakan docker-compose anda perlu membuat file docker-compose.yml pada direktori root project.

version: "3.8"

services:
  adonis:
    container_name: adonis
    image: adonis:1.0
    ports:
      - 8010:8010
    networks:
      - adonis-network

  nginx:
    container_name: nginx
    image: nginx:1.17.2
    ports:
      - 80:80
    networks:
      - adonis-network
    volumes:
      - ./conf.d:/etc/nginx/conf.d
    depends_on:
      - adonis

networks:
  adonis-network:
    name: adonis-network

Pada docker-compose saya menggunakan dua services dan satu network, services terdiri dari image adonis yang sudah saya buat dan nginx menggunakan image yang sudah tersedia pada docker hub. Pada kedua services menggunakan satu network yang sama yang diberi nama adonis-network, sedangkan port pada masing - masing services di definisikan sesuai konfigurasi. Perlu di ingat bahwa penggunaan ports pada docker harus sama dengan port yang terdapat pada project anda, pada adonis anda perlu melakukan set pada file environment host menjadi 0.0.0.0 dan port 8010 yang sesuai dengan pengaturan pada docker-compose.yml.

Pada services nginx saya melakukan mounting volume, sehingga isi dari direktori ./conf.d akan sama dengan directory /etc/nginx/conf.d pada container, ini dimaksudkan karena setiap container yang berjalan akan menggunakan directory systemnya secara mandiri sehingga directory system antar container tidak akan sama.

Setelah konfigurasi docker-compose.yml telah selesai, anda perlu menjalankan perintah docker-compose up -d untuk membuat container dan menjalankan pada background.

alt images

Setelah itu anda dapat mengecek pada localhost apakah container yang anda buat telah terbuat dan berhasil berjalan pada konfigurasi yang telah ditentukan.

alt images

Referensi Materi

Jika anda ingin mempelajari docker lebih lanjut sebaiknya lihat video pembelajaran yang terdapat pada playlist youtube milik channel Programmer Zaman Now atau membaca dokumentasi yang terdapat pada halaman dokumentasi docker.

Materi dari youtube : Belajar Docker untuk Pemula

Dokumentasi Docker : Docker Docs

Contoh Repositori : Adonis Docker

Ingin Berkomentar ?

Gunakan fitur komentar dengan bijak demi keamanan dan kenyamanan anda saat berselancar di dunia maya ini, mungkin undang - undang atau peraturan dari sebagian wilayah akan menjerat aktivitas yang ada pada kolom komentar.