Docker Compose untuk VPS: Panduan Install & Contoh Nyata

Docker Compose untuk VPS: Panduan Install & Contoh Nyata

Waktu membaca menit

Kategori VPS

Diposting pada 25 Sep 2026

Docker Compose untuk VPS memudahkan kamu menjalankan banyak container dalam satu aplikasi tanpa mengatur port, environment variable, dan network secara manual. Lewat panduan ini, kamu akan mempelajari cara install Docker Compose di VPS, membuat konfigurasi, menjalankan service, hingga menerapkan stack aplikasi nyata untuk kebutuhan development maupun production.

Kenapa Menggunakan Docker Compose di VPS?

Bayangkan kamu punya aplikasi web yang membutuhkan PHP, MySQL, Redis, dan Nginx. Tanpa Compose, masing-masing container perlu dibuat, diberi network, port, environment variable, serta volume secara terpisah. 

Ketika ada update, pekerjaan yang sama bisa berulang lagi. Docker Compose merapikan proses tersebut.

Compose memungkinkan konfigurasi service, network, volume, dan kebutuhan aplikasi didefinisikan dalam satu file. Docker sendiri merekomendasikan Compose Specification sebagai format Compose terbaru.

Baca Juga: Top 7 Alat Docker Container untuk Produktivitas di 2025

Ada beberapa alasan kenapa pendekatan ini cocok untuk VPS:

  • Konsisten: environment development dan production lebih mudah dibuat seragam.
  • Terisolasi: setiap service berjalan dalam container masing-masing.
  • Mudah di-update: image dapat diperbarui lalu service dijalankan kembali.
  • Mudah dilacak: file Compose bisa disimpan di Git sebagai infrastructure as code.
  • Rollback lebih praktis: image versi sebelumnya dapat dipertahankan ketika deployment baru bermasalah.

Compose paling terasa manfaatnya ketika kamu menjalankan multi-container application, misalnya aplikasi web dan database, web + Redis, atau stack yang terdiri dari app, database, queue, dan reverse proxy.

Ini juga berguna ketika satu VPS dipakai untuk beberapa aplikasi yang ingin tetap terisolasi.

Baca Juga: Butuh Alternatif Docker? Ini Solusi yang Wajib Dicoba 2025!

Persiapan Sebelum Install Docker Compose di VPS

install docker compose di VPS

Sebelum masuk ke panduan cara install docker compose Ubuntu, pastikan hosting VPS sudah memenuhi kebutuhan dasar.

Untuk tutorial ini, gunakan:

  • Ubuntu 22.04 atau 24.04 LTS
  • Minimal 2 GB RAM; 4 GB lebih nyaman untuk stack beberapa service
  • Akses SSH
  • User dengan hak sudo
  • Domain yang mengarah ke IP VPS jika aplikasi akan menggunakan HTTPS

Kalau kamu menggunakan VPS Ubuntu docker, resource VPS sebaiknya disesuaikan dengan jumlah container. Aplikasi kecil mungkin cukup dengan 2 GB RAM, tetapi kombinasi web server, database, Redis, dan proses background akan lebih nyaman pada resource yang lebih lega.

Cara Install Docker Compose di VPS

Setelah VPS siap, sekarang masuk ke bagian utama: install Docker Compose di VPS. Pada Ubuntu versi terbaru, Compose tersedia sebagai plugin Docker dan dijalankan dengan command docker compose.

Langkah 1: Update Package Ubuntu

Login ke VPS melalui SSH, lalu perbarui package:

sudo apt update && sudo apt upgrade -y

Langkah ini memastikan sistem menggunakan package terbaru sebelum Docker dipasang.

Langkah 2: Install Docker Engine

Install Docker beserta komponen pendukungnya:

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Setelah proses selesai, cek instalasi:

docker --version

Jika versi Docker muncul, berarti Docker Engine sudah terpasang.

Langkah 3: Aktifkan Docker

Pastikan service Docker berjalan dan otomatis aktif setelah VPS melakukan reboot:

sudo systemctl enable docker
sudo systemctl start docker

Kemudian periksa statusnya:

sudo systemctl status docker

Jika muncul status active (running), Docker siap digunakan.

Langkah 4: Izinkan User Menjalankan Docker Tanpa sudo

Secara default, Docker membutuhkan sudo. Supaya lebih praktis, tambahkan user yang sedang digunakan ke group Docker:

sudo usermod -aG docker $USER

Setelah itu, logout dari VPS dan login kembali agar perubahan group diterapkan.

Tes dengan:

docker ps

Jika command dapat dijalankan tanpa sudo, konfigurasinya sudah berhasil.

Langkah 5: Cek Versi Docker Compose

Sekarang pastikan Compose sudah tersedia:

docker compose version

Output akan menampilkan versi Docker Compose yang terpasang.

Perhatikan penggunaan spasi pada command tersebut. Sintaks modern adalah:

docker compose

bukan:

docker-compose

Langkah 6: Buat Direktori Project

Agar file konfigurasi docker tersusun rapi, buat direktori khusus untuk aplikasi:

mkdir -p ~/myapp
cd ~/myapp

Kamu nantinya dapat menyimpan compose.yaml, .env, Dockerfile, source code, dan konfigurasi service lainnya di dalam direktori ini.

Langkah 7: Uji Docker Compose

Sebelum memasukkan aplikasi sebenarnya, kamu bisa melakukan pengujian sederhana:

docker compose config

Command tersebut akan memvalidasi konfigurasi Compose. Jika belum ada file compose.yaml, buat file tersebut terlebih dahulu sebelum menjalankan command ini.

Setelah semua langkah berhasil, VPS sudah siap digunakan untuk menjalankan multi-container application menggunakan Docker Compose.

Memahami Anatomi File Compose

Sebelum masuk ke contoh nyata, pahami beberapa bagian yang paling sering digunakan.

services berisi container yang ingin dijalankan.

image menggunakan image yang sudah tersedia, misalnya redis:alpine.

build digunakan ketika kamu ingin membuat image sendiri berdasarkan Dockerfile.

ports memetakan port VPS ke port container. Contohnya:

ports:
  - "8000:5000"

Artinya port 8000 pada VPS diteruskan ke port 5000 di dalam container.

environment berisi konfigurasi yang dibutuhkan aplikasi ketika berjalan.

volumes penting untuk data yang harus tetap ada, terutama database.

networks mengatur komunikasi antar-container.

depends_on membantu menentukan dependency antars service. Namun, perlu diingat: depends_on dasar tidak otomatis berarti service tujuan sudah benar-benar siap menerima koneksi. Untuk kasus database, health check lebih aman digunakan.

Contoh Compose Sederhana

Untuk memahami alurnya, mulai dari satu service:

services:
  web:
    build: .
    ports:
      - "8000:5000"
    environment:
      APP_ENV: production

Di sini web adalah nama service. Docker akan membangun image berdasarkan Dockerfile pada direktori saat ini.

Jalankan dengan:

docker compose up -d

Kemudian cek:

docker compose ps

Kalau aplikasi listen di port 5000 dalam container, kamu bisa mengaksesnya melalui http://IP-VPS:8000.

Contoh Nyata Menjalankan Docker Compose di VPS

Contoh 1: Web App + Redis

Sekarang naik satu tingkat. Misalnya aplikasi Python atau Node membutuhkan Redis sebagai cache.

Struktur project:

myapp/
├── compose.yaml
├── Dockerfile
└── app/

Contoh compose.yaml:

services:
  web:
    build: .
    ports:
      - "8000:5000"
    environment:
      REDIS_HOST: redis
    depends_on:
      - redis

  redis:
    image: redis:7-alpine

Jalankan:

docker compose up -d

Lalu periksa:

docker compose ps
docker compose logs -f

Hal menarik di sini adalah aplikasi tidak perlu mencari IP Redis secara manual. Aplikasi cukup menggunakan hostname redis, karena Compose menyediakan network internal dan service dapat ditemukan berdasarkan nama servicenya.

Ini salah satu alasan Docker Compose terasa praktis untuk aplikasi dengan beberapa komponen.

Contoh 2: Aplikasi Web + MySQL dengan Data Persisten

install docker compose di VPS

Bagaimana jika aplikasimu membutuhkan database?

Jangan hanya menjalankan MySQL tanpa volume. Data database sebaiknya berada pada storage yang tetap tersedia meskipun container dibuat ulang.

Contoh:

services:
  app:
    build: .
    environment:
      DB_HOST: db
      DB_DATABASE: ${DB_DATABASE}
      DB_USERNAME: ${DB_USERNAME}
      DB_PASSWORD: ${DB_PASSWORD}
    depends_on:
      db:
        condition: service_healthy

  db:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USERNAME}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  mysql_data:

Simpan kredensial dalam .env:

DB_DATABASE=myapp
DB_USERNAME=myapp_user
DB_PASSWORD=password-yang-kuat
MYSQL_ROOT_PASSWORD=password-root-yang-kuat

Untuk password yang lebih kuat, kamu bisa membuat random string:

openssl rand -base64 32

Setelah itu jalankan:

docker compose up

Pada tahap ini, database akan memiliki volume persisten. Coba command berikut:

docker compose down
docker compose up -d

Data tetap tersedia.

Hati-hati dengan:

docker compose down -v

Flag -v juga menghapus volume yang dideklarasikan Compose. Untuk database production, jangan menjalankan command tersebut sembarangan.

Contoh 3: Docker Compose Production dengan Nginx dan SSL

Untuk deployment nyata, pola yang sering digunakan adalah:

Internet → Nginx → Applicatio → MySQL / Redis

Nginx berfungsi sebagai reverse proxy. Container aplikasi tidak harus membuka port langsung ke internet; cukup Nginx yang mengekspos port 80 dan 443.

Contoh struktur:

myapp/
├── compose.yaml
├── .env
├── app/
├── nginx/
│   └── conf.d/
└── data/

Pada service production, gunakan:

restart: unless-stopped

Dengan begitu container dapat kembali berjalan ketika Docker atau VPS mengalami restart.

Untuk HTTPS, kamu bisa menggunakan Let’s Encrypt melalui Certbot. Certbot menyediakan opsi untuk memperoleh sertifikat dan menguji proses renewal dengan certbot renew --dry-run.

Setelah konfigurasi Nginx dan SSL siap, deployment bisa dilakukan dengan:

docker compose up -d --build

Kemudian pantau:

docker compose logs -f nginx

Jika domain sudah diarahkan ke VPS dan konfigurasi benar, aplikasi dapat diakses melalui HTTPS.

Perhatikan Keamanan Container VPS

Docker bukan berarti aplikasi otomatis aman. Keamanan container VPS tetap perlu diperhatikan.

Jangan expose database seperti MySQL dan Redis ke internet jika tidak diperlukan. Hindari menaruh password langsung di repository Git. Gunakan .env dengan permission yang sesuai dan jangan memasukkannya ke Git.

Selain itu, batasi port menggunakan firewall, gunakan SSH key jika memungkinkan, update image secara berkala, dan pantau resource VPS.

Untuk production, resource limit juga layak dipertimbangkan. Satu container yang mengalami memory leak tidak seharusnya membuat seluruh VPS kehabisan RAM.

Kesimpulan

Docker Compose membuat pengelolaan aplikasi di VPS jauh lebih sederhana. Kamu bisa mendefinisikan aplikasi, database, cache, network, volume, hingga reverse proxy dalam satu konfigurasi, lalu mengelolanya menggunakan command yang konsisten.

Mulai dari stack sederhana seperti web + Redis, kemudian lanjutkan ke aplikasi + database dengan health check dan persistent volume. Jika sudah siap production, tambahkan Nginx, HTTPS, restart policy, backup, serta pengaturan resource.

Kalau kamu ingin menjalankan Docker Compose tanpa repot menyiapkan infrastruktur server dari nol, VPS Murah dari IDwebhost bisa menjadi pilihan untuk kebutuhan deployment aplikasi berbasis container. Pilih resource VPS sesuai kebutuhan aplikasi, lalu gunakan Ubuntu sebagai fondasi untuk menjalankan Docker dan Compose.

Dengan begitu, VPS bukan sekadar tempat menyimpan website, tetapi bisa menjadi lingkungan deployment yang fleksibel untuk menjalankan berbagai aplikasi web dan database dalam satu server.