Tutorial

Cara Menginstal dan Menggunakan Docker Compose pada Ubuntu 20.04

Published on November 5, 2020
Bahasa Indonesia
Cara Menginstal dan Menggunakan Docker Compose pada Ubuntu 20.04

Pengantar

Docker menyederhanakan proses dari pengelolaan proses aplikasi di dalam kontainer. Meskipun kontainer mirip dengan mesin virtual dalam hal tertentu, tetapi kontainer lebih ringan dan ramah sumber daya. Ini memungkinkan pengembang untuk membagi lingkungan aplikasi menjadi beberapa layanan terisolasi.

Untuk aplikasi yang bergantung pada beberapa layanan, menyusun semua kontainer untuk memulai, berkomunikasi, dan menutup secara bersamaan akan menjadi hal yang sulit. Docker Compose adalah alat yang memungkinkan Anda untuk menjalankan lingkungan aplikasi multikontainer berdasarkan definisi yang ditetapkan dalam berkas YAML. Alat ini menggunakan definisi layanan untuk sepenuhnya membangun lingkungan yang dapat disesuaikan dengan penggunaan beberapa kontainer yang dapat berbagi volume data dan jaringan.

Dalam panduan ini, kami akan menunjukkan cara menginstal Docker Compose pada server Ubuntu 20.04 dan cara memulainya menggunakan alat ini.

Prasyarat

Untuk mengikuti artikel ini, Anda akan memerlukan:

Langkah 1 — Menginstal Docker Compose

Untuk memastikan bahwa kita memperoleh versi stabil yang terbaru dari Docker Compose, kita akan mengunduh perangkat lunak ini dari repositori Github resmi.

Pertama-tama, pastikan versi terbaru yang tersedia di laman rilis mereka. Pada saat panduan penulisan ini, versi stabil yang terbaru adalah 1.26.0.

Perintah berikut akan mengunduh rilis 1.26.0 dan menyimpan berkas yang dapat dieksekusi di /usr/local/bin/docker-compose, yang akan menjadikan perangkat lunak ini dapat diakses secara global sebagai docker-compose:

  1. sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Selanjutnya, atur izin yang benar sehingga perintah docker-compose dapat dieksekusi:

  1. sudo chmod +x /usr/local/bin/docker-compose

Untuk memverifikasi bahwa instalasi berhasil, Anda dapat menjalankan:

  1. docker-compose --version

Anda akan melihat keluaran yang serupa dengan ini:

Output
docker-compose version 1.26.0, build 8a1c60f6

Docker Compose kini telah berhasil terinstal di sistem Anda. Di bagian selanjutnya, kita akan melihat cara menyiapkan berkas docker-compose.yml dan menjadikan lingkungan terkontainerisasi aktif dan berjalan dengan alat ini.

Langkah 2 — Menyiapkan Berkas docker-compose.yml

Untuk menunjukkan cara menyiapkan berkas docker-compose.yml dan bekerja dengan Docker Compose, kita akan menciptakan suatu lingkungan server web menggunakan citra Nginx resmi dari Docker Hub, yang merupakan registri Docker publik. Lingkungan terkontainerisasi ini akan menyajikan sebuah berkas HTML statis tunggal.

Mulai dengan menciptakan direktori baru di dalam folder rumah Anda, lalu masuk ke dalamnya:

  1. mkdir ~/compose-demo
  2. cd ~/compose-demo

Dalam direktori ini, siapkan folder aplikasi untuk berperan sebagai root dokumen bagi lingkungan Nginx Anda:

  1. mkdir app

Dengan menggunakan editor teks pilihan Anda, ciptakan berkas index.html yang baru di dalam folder app:

  1. nano app/index.html

Taruh konten berikut ke dalam berkas ini:

~/compose-demo/app/index.html
<!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>

Simpan dan tutup berkas setelah Anda selesai. Jika Anda menggunakan nano, Anda dapat melakukan itu dengan mengetik CTRL+X, lalu Y, dan ENTER untuk mengonfirmasi.

Selanjutnya, ciptakan berkas docker-compose.yml:

  1. nano docker-compose.yml

Masukkan konten berikut pada berkas docker-compose.yml Anda:

docker-compose.yml
version: '3.7'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./app:/usr/share/nginx/html

Berkas docker-compose.yml biasanya dimulai dengan definisi version. Ini akan memberi tahu Docker Compose tentang versi konfigurasi yang kita gunakan.

Kemudian, kita memiliki blok services, untuk menyiapkan layanan yang merupakan bagian dari lingkungan ini. Dalam kasus ini, kita memiliki sebuah layanan tunggal yang disebut web. Layanan ini menggunakan citra nginx:alpine dan menyiapkan pengalihan porta dengan arahan ports. Semua permintaan pada porta 8000 dari mesin **hos **(sistem tempat Anda menjalankan Docker Compose) akan dialihkan ke kontainer web pada porta 80, tempat Nginx akan berjalan.

Arahan volumes akan menciptakan volume bersama antara mesin hos dan kontainer. Volume ini akan berbagi folder app lokal dengan kontainer, dan terletak di /usr/share/nginx/html di dalam kontainer, yang kemudian akan menimpa root dokumen asali untuk Nginx.

Simpan dan tutup berkas.

Kita telah menyiapkan laman demo dan berkas docker-compose.yml untuk menciptakan lingkungan server web terkontainerisasi yang akan melengkapinya. Dalam langkah berikutnya, kita akan menjadikan lingkungan ini aktif dengan Docker Compose.

Langkah 3 — Menjalankan Docker Compose

Dengan berkas docker-compose.yml berada di tempatnya, kita kini dapat mengeksekusi Docker Compose untuk menjadikan lingkungan kita aktif. Perintah berikut akan mengunduh citra Docker yang diperlukan, menciptakan kontainer untuk layanan web, dan menjalankan lingkungan terkontainerisasi dalam mode latar belakang:

  1. docker-compose up -d

Docker Compose pertama-tama akan mencari citra yang didefinisikan pada sistem lokal Anda, dan jika Docker Compose tidak dapat menemukan citra tersebut, maka Docker Compose akan mengunduh citra dari Docker Hub. Anda akan melihat keluaran seperti ini:

Output
Creating network "compose-demo_default" with the default driver Pulling web (nginx:alpine)... alpine: Pulling from library/nginx cbdbe7a5bc2a: Pull complete 10c113fb0c77: Pull complete 9ba64393807b: Pull complete c829a9c40ab2: Pull complete 61d685417b2f: Pull complete Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502 Status: Downloaded newer image for nginx:alpine Creating compose-demo_web_1 ... done

Lingkungan Anda kini telah aktif dan berjalan di latar belakang. Untuk memverifikasi bahwa kontainer sudah aktif, Anda dapat menjalankan:

  1. docker-compose ps

Perintah ini akan menunjukkan informasi kepada Anda tentang kontainer yang sedang berjalan dan keadaannya, serta pengalihan porta apa pun yang aktif:

Output
Name Command State Ports ---------------------------------------------------------------------------------- compose-demo_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8000->80/tcp

Anda kini dapat mengakses aplikasi demo dengan mengarahkan peramban Anda ke localhost:8000 jika Anda menjalankan demo ini pada mesin lokal, atau your_server_domain_or_IP:8000 jika Anda menjalankan demo ini pada server jauh.

Anda akan melihat sebuah laman seperti ini:

Laman Demo Docker Compose

Karena volume bersama yang Anda siapkan di dalam berkas docker-compose.yml menjaga berkas-berkas folder app Anda tetap sinkron dengan root dokumen kontainer. Jika Anda membuat perubahan apa pun terhadap berkas index.html, perubahan itu akan secara otomatis diambil oleh kontainer dan tercermin pada peramban ketika Anda memuat ulang laman.

Pada langkah selanjutnya, Anda akan melihat cara mengelola lingkungan terkontainerisasi Anda dengan perintah Docker Compose.

Langkah 4 — Membiasakan Diri dengan Perintah Docker Compose

Anda telah melihat cara menyiapkan berkas docker-compose.yml dan menjadikan lingkungan Anda aktif dengan docker-compose up. Anda kini akan melihat cara menggunakan perintah Docker Compose untuk mengelola dan berinteraksi dengan lingkungan terkontainerisasi Anda.

Untuk memeriksa log yang dihasilkan oleh kontainer Nginx, Anda dapat menggunakan perintah logs:

  1. docker-compose logs

Anda akan melihat keluaran yang serupa dengan ini:

Output
Attaching to compose-demo_web_1 web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh web_1 | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf web_1 | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up web_1 | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"

Jika Anda ingin menghentikan sejenak eksekusi lingkungan tanpa mengubah keadaan kontainer saat ini, Anda dapat menggunakan:

  1. docker-compose pause
Output
Pausing compose-demo_web_1 ... done

Untuk melanjutkan eksekusi setelah melakukan jeda:

  1. docker-compose unpause
Output
Unpausing compose-demo_web_1 ... done

Perintah stop akan menghentikan eksekusi kontainer, tetapi tidak akan menghancurkan data apa pun yang terasosiasi dengan kontainer Anda:

  1. docker-compose stop
Output
Stopping compose-demo_web_1 ... done

Jika Anda ingin menghapus kontainer, jaringan, dan volume yang terasosiasi dengan lingkungan terkontainerisasi, gunakan perintah down:

  1. docker-compose down
Output
Removing compose-demo_web_1 ... done Removing network compose-demo_default

Perhatikan bahwa ini tidak akan menghapus citra dasar yang digunakan oleh Docker Compose untuk mengaktifkan lingkungan Anda (dalam kasus kita, nginx:alpine). Dengan cara ini, kapan pun Anda menjadikan lingkungan aktif kembali dengan docker-compose up, prosesnya akan jauh lebih cepat karena citra sudah berada di sistem Anda.

Jika Anda juga ingin menghapus citra dasar dari sistem, Anda dapat menggunakan:

  1. docker image rm nginx:alpine
Output
Untagged: nginx:alpine Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912 Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270 Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1 Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157 Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6 Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08 Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

Catatan: Lihat panduan kami tentang Cara Menginstal dan Menggunakan Docker untuk referensi yang lebih mendetail tentang perintah-perintah Docker.

Kesimpulan

Dalam panduan ini, kita telah melihat cara menginstal Docker Compose dan menyiapkan lingkungan terkontainerisasi berdasarkan suatu citra server web Nginx. Kita juga telah melihat cara mengelola lingkungan ini dengan menggunakan perintah-perintah Compose.

Untuk referensi lengkap dari semua perintah docker-compose yang tersedia, lihat dokumentasi resmi.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar
Tony Tran

author


Default avatar

Developer Advocate

Dev/Ops passionate about open source, PHP, and Linux.


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel