Deployment
Docker

Docker

Docker adalah software open-source yang digunakan untuk meluncurkan (deploy) aplikasi di dalam container virtual. Dengan container virtual ini (containerization), aplikasi bisa dijalankan secara terisolasi di environment yang kompleks sehingga tidak menimbulkan masalah pada environment lainnya.

Masih bingung tentang apa itu docker? Jadi, mudahnya begini: Docker adalah platform container atau lingkup isolasi, yang nantinya container ini bisa digunakan untuk menjalankan suatu aplikasi atau layanan dengan lancar di sistem yang berbeda.

Referensi: Apa Itu Docker? (opens in a new tab)

Instalasi

Setup Docker Desktop

Kita perlu install Docker Desktop, jika kamu belum install bisa install terlebih dahulu, kunjungi websitenya seperti gambar di bawah.

Docker Desktop

Referensi: Docker Desktop (opens in a new tab)

Instal Ekstensi

Instal ekstensi Visual Studio Code Docker, untuk mempermudah kamu dalam menggunakan Docker.

docker-ext

Setup Docker CLI/Engine

Setup ini dilakukan bagi pengguna Windows yang telah menginstal WSL versi Ubuntu.

Menginstal menggunakan repositori apt

Sebelum kamu menginstal Docker Engine untuk pertama kalinya pada mesin hos baru, kamu perlu menyiapkan repositori Docker. Setelah itu, kamu dapat menginstal dan memperbarui Docker dari repositori.

Buka terminal Ubuntu kamu, kemudian ikuti langkah-langkah di bawah ini.

  1. Siapkan repositori apt Docker.
# Tambahkan GPG key resmi Docker:
sudo apt update
 
sudo apt install ca-certificates curl
 
sudo install -m 0755 -d /etc/apt/keyrings
 
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
 
sudo chmod a+r /etc/apt/keyrings/docker.asc
 
# Tambahkan repositori ke sumber Apt:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
sudo apt update
  1. Instal package Docker.
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. Verifikasi bahwa instalasi Docker Engine telah berhasil dengan menjalankan hello-world image.
sudo docker run hello-world
  1. Verifikasi untuk cek versi dari Docker Engine/CLI.
docker version
# atau
sudo docker version

Referensi: Install Docker Engine on Ubuntu - Install using the apt repository (opens in a new tab)

Docker Images

Docker Images adalah template yang digunakan untuk membuat container Docker. Image ini berisi semua yang dibutuhkan untuk menjalankan aplikasi, termasuk kode, dependensi, alat, pustaka, dan konfigurasi.

Membuat Docker Images

Untuk membuat Docker images, kamu perlu menulis Dockerfile. Contoh sederhana Dockerfile:

Dockerfile
# Choose Base Image
FROM node:alpine

# Define working directory
WORKDIR /usr/src/app

# Copy package.json to workdir
COPY ./package.json ./

# Install Dependencies
RUN npm install

# Copy app files to workdir
COPY ./ ./

# Run the app
CMD ["npm", "run", "start"]

Untuk membangun image dari Dockerfile ini, gunakan perintah:

docker build -t nama-image-kamu .

Melihat Daftar Docker Images

docker images

Docker Container

Docker Container adalah instance yang berjalan dari Docker image. Container ini dapat dianggap sebagai sebuah lingkungan runtime terisolasi.

Menjalankan Container

Untuk menjalankan container dari image yang telah dibuat:

docker run -d -p 3000:3000 nama-image-kamu

Penjelasan perintah:

  • -d membuat container berjalan di latar belakang (detached mode).
  • -p 3000:3000 memetakan port 3000 di host ke port 3000 di container.

Melihat Daftar Container yang Berjalan

docker ps

Selanjutnya, jika kamu ingin melihat semua container (aktif dan tidak aktif), gunakan perintah -a:

docker ps -a

Menghentikan Container

docker stop [id atau nama-image-kamu]

Docker Volumes

Docker Volumes adalah mekanisme untuk menyimpan data yang persisten di luar container. Volume ini dapat digunakan untuk berbagi data antara host dan container atau antara beberapa container.

Membuat dan Menggunakan Volume

Untuk membuat volume:

docker volume create nama-volume

Untuk menjalankan container dengan volume:

docker run -d -p 3000:3000 -v nama-volume:/path/di/dalam/container nama-image-kamu

Docker Compose

Docker Compose adalah alat untuk mendefinisikan dan menjalankan aplikasi Docker multi-container. Dengan menggunakan file docker-compose.yml, kamu dapat mengatur layanan, jaringan, dan volume untuk aplikasi kamu.

Contoh docker-compose.yml

Contoh file docker-compose.yml aplikasi Backend menggunakan Express.js dan MongoDB:

docker-compose.yml
version: "3.8"

services:
  expressjs:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - mongodb

  mongodb:
    image: mongo
    ports:
      - "27017:27017"

Jika ditambahkan menggunakan Docker Volumes pada file docker-compose.yml, contohnya sebagai berikut:

docker-compose.yml
version: "3.8"

services:
  expressjs:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - mongodb

  mongodb:
    image: mongo
    ports:
      - "27017:27017"
    volumes:
      - mongovolume:/data/db

volumes:
  mongovolume:

Membuat dan Menggunakan Volume

Untuk membuat volume:

docker volume create nama-volume

Untuk menjalankan container dengan volume:

docker run -d --name nama-container-kamu -v nama-volume:/path/in/container IMAGE

Menjalankan Docker Compose

Untuk menjalankan aplikasi menggunakan Docker Compose:

docker-compose up

Perintah ini akan membangun image jika diperlukan dan menjalankan container sesuai dengan definisi di docker-compose.yml.