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:
Environment sudah up dan running di background, untuk verifikasi container yang aktif, kamu bisa jalankan perintah di bawah ini.
$ docker-compose ps
Output:
Coba akses IP Server kamu dengan port 8000. Maka outputnya akan seperti di bawah ini.
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.