Cara Install dan Menggunakan Docker Compose di Ubuntu 20.04

Cara Install dan Menggunakan Docker Compose di Ubuntu 20.04

JIka pada artikel sebelumnya Dewaweb membahas mengenai cara install dan menggunakan Docker di Ubuntu 20.04, pada artikel ini kami akan membahas mengenai cara install dan menggunakan Docker Compose di Ubuntu 20.04.

Docker Compose

Docker Compose adalah tool yang memungkinkan kamu untuk menjalankan multi-kontainer application environments berdasarkan definisi yang diatur dalam file YAML. Hal ini menggunakan definisi layanan untuk membangun fully customizable environments dengan multiple containers yang dapat berbagi jaringan dan volume data.

Perbedaan Docker Run dan Docker Compose

Perbedaan utama antara Docker Run dan Docker Compose adalah bahwa docker run sepenuhnya berbasis command-line sedangkan docker-compose membaca data konfigurasi dari file YAML.

Perbedaan kedua adalah docker run hanya dapat memulai satu container pada satu waktu, sedangkan docker-compose dapat menjalankan serta mengkonfigurasi lebih dari satu secara bersamaan.

Persyaratan 

Terdapat beberapa persyaratan sebelum melakukan instalasi.  

  • Memiliki VPS yang aktif dengan OS Ubuntu 20.04. 
  • Sudah melakukan install dan menggunakan Docker di Ubuntu 20.04
  • Memiliki akses root.

Point

Terdapat beberapa rangkuman point instalasi pada artikel ini.

  • Update Server
  • Install Docker Compose
  • Setting docker-compose.yml File
  • Running Docker Compose

Cara Install dan Menggunakan Docker Compose di Ubuntu 20.04

Berikut cara install dan menggunakan Docker Compose di Ubuntu 20.04 yang bisa kamu terapkan.

Update Server

Login terlebih dahulu ke root server dan update server untuk memastikan packages server nya sudah up-to-date.

$ apt-get update -y

$ reboot

Install Docker Compose

Untuk memastikan kamu mendapatkan update versi yang paling stabil dari Docker Compose, kamu perlu download pada Official GitHub Repository.

Cek pada ketersediaan latest version di Release Pages. Pada artikel ini ditulis, versi paling latest adalah v2.17.0.

Kemudian, lakukan download latest tersebut tersebut dan save executable file pada path /usr/local/bin/docker-compose, yang nantinya akan dapat diakses secara global sebagai docker-compose.

$ sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep '\"tag_name\":' | sed -E 's/.*\"([^\"]+)\".*/\1/')/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Set Permission pada docker-compose supaya executable.

$ chmod +x /usr/local/bin/docker-compose

Check version docker compose yang sudah di install sebelumnya.

$ docker-compose --version

Output:

Docker Compose version v2.17.0

Setting docker-compose.yml File

Buat file docker-compose.yml, kita akan membuat web server environment menggunakan official Nginx image dari Docker Hub. Environment ini akan dibuat menjadi Dockerize dan akan menyajikan single static HTML file.

$ mkdir ~/compose-demo

$ cd ~/compose-demo

Buat directory application.

$ mkdir app

Buat index.html di dalam directory app.

$ nano index.html

Pastekan script berikut.

<!doctype html>

<html lang="en">

<head>

    <meta charset="utf-8">

    <title>Docker Compose Demo</title>

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">

</head>

<body>

    <h1>This is a Docker Compose Demo Page.</h1>

    <p>This content is being served by an Nginx container.</p>

</body>

</html>

Save dan exit jika sudah.

Buat file docker-compose.yml

$ nano docker-compose.yml

Pastekan script berikut.

version: '3.7'

services:

  web:

    image: nginx:alpine

    ports:

      - "8000:80"

    volumes:

      - ./app:/usr/share/nginx/html

Save dan exit.

File docker-compose.yml biasanya dimulai dengan definisi versi. Hal ini akan memberitahu Docker Compose versi konfigurasi mana yang digunakan.

Kamu juga memiliki services block, tempat dimana kamu menyiapkan services yang merupakan bagian dari Environment ini. Dalam hal ini, kami menggunakan image dari nginx:alpine dan mengatur port redirection dengan port directive. Semua request pada port 8000 akan dialihkan ke web container pada port 80, dimana Nginx berjalan.

Volume diset pada /usr/share/nginx/html di dalam container, yang kemudian kana menimpa default document root untuk Nginx.

Running Docker Compose

Dengan file docker-compose.yml, kamu bisa melakukan eksekusi Docker Compose. Perintah di bawah ini akan melakukan download image Docker yang diperlukan, membuat container untuk web service dan menjalankan containerized environment di background mode.

$ docker-compose up -d

Output:

Asset Blog Dewaweb

Environment sudah up dan running di background, untuk verifikasi container yang aktif, kamu bisa jalankan perintah di bawah ini.

$ docker-compose ps 

Output:

Asset Blog Dewaweb

Coba akses IP Server kamu dengan port 8000. Maka outputnya akan seperti di bawah ini.

Asset Blog Dewaweb

Screenshot diatas menampilkan konten dari index.html yang dibuat pada directory app.

Directory App sudah sync dengan directory /usr/share/nginx/html yang ada di dalam container compose-demo-web-1, sehingga untuk modifikasi bisa dilakukan di directory /root/compose-demo/app tanpa harus masuk ke Shell Container dari aplikasi compose-demo-web-1.

Logs

Kamu juga bisa melihat logs menggunakan docker-compose.

$ docker-compose logs

Output:

compose-demo-web-1  | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration

compose-demo-web-1  | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/

compose-demo-web-1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh

compose-demo-web-1  | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf

compose-demo-web-1  | 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf

compose-demo-web-1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh

compose-demo-web-1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh

compose-demo-web-1  | /docker-entrypoint.sh: Configuration complete; ready for start up

compose-demo-web-1  | 2023/03/24 03:41:15 [notice] 1#1: using the "epoll" event method

compose-demo-web-1  | 2023/03/24 03:41:15 [notice] 1#1: nginx/1.23.3

compose-demo-web-1  | 2023/03/24 03:41:15 [notice] 1#1: built by gcc 12.2.1 20220924 (Alpine 12.2.1_git20220924-r4) 

compose-demo-web-1  | 2023/03/24 03:41:15 [notice] 1#1: OS: Linux 5.4.0-29-generic

compose-demo-web-1  | 2023/03/24 03:41:15 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576

compose-demo-web-1  | 2023/03/24 03:41:15 [notice] 1#1: start worker processes

compose-demo-web-1  | 2023/03/24 03:41:15 [notice] 1#1: start worker process 29

compose-demo-web-1  | 103.56.37.78 - - [24/Mar/2023:03:44:56 +0000] "GET / HTTP/1.1" 403 555 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" "-"

Pause

Kamu juga bisa melakukan pause pada environment tanpa mengubah status dari container.

$ docker-compose pause

Output:

[+] Running 1/0

 ✔ Container compose-demo-web-1  Paused  

Dan jika ingin unpause kamu bisa menggunakan perintah di bawah ini.

$ docker-compose unpause

[+] Running 1/0

 ✔ Container compose-demo-web-1  Unpaused 

Stop

Untuk melakukan stop pada environment juga kamu bisa melakukan perintah di bawah ini.

$ docker-compose stop

[+] Running 1/1

 ✔ Container compose-demo-web-1  Stopped  

Kesimpulan

Dengan mengikuti artikel ini, artinya kamu sudah berhasil melakukan install & menggunakan Docker Compose di Ubuntu 20.04. Demikian artikel ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb. Semoga artikel ini membantu.