Docker Compose untuk VPS: Panduan Install & Contoh Nyata
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

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

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.