Migrasi 50+ Aplikasi Legacy dari cPanel ke Docker

Migrasi 50+ Aplikasi Legacy dari cPanel ke Docker

Daftar Isi

Lima puluh sekian aplikasi PHP dalam satu server cPanel. Semuanya berbagi satu versi PHP, satu filesystem, dan satu nasib.

Memperbarui apa pun berarti mempertanyakan apakah kelima puluh aplikasi itu akan selamat, dan karena tidak ada yang bisa menjawabnya, jawabannya selalu tidak. Maka versi PHP tetap di tempatnya, aplikasi-aplikasi itu menua, dan risikonya diam-diam menumpuk.

Saya memindahkan seluruhnya ke VPS berbasis Docker, satu container untuk setiap aplikasi.

Bagian yang menarik bukan container-nya, melainkan proses mencari tahu apa yang sebenarnya masih berjalan.

Tantangan

Mengelola 50 aplikasi berbeda dalam satu server cPanel monolitik menghadirkan hambatan yang signifikan:

  • Konflik Dependensi: Setiap aplikasi membutuhkan versi dan ekstensi PHP yang berbeda, sehingga proses upgrade menjadi berisiko.
  • Deployment Manual: Pembaruan dilakukan melalui FTP atau Git pull manual yang rentan terhadap human error dan downtime.
  • Risiko Keamanan: Tanpa isolasi, satu aplikasi yang disusupi dapat memengaruhi keseluruhan server.

Solusi

Saya merancang arsitektur microservices di mana setiap aplikasi berjalan dalam container yang terisolasi dan diorkestrasi oleh Docker Compose, namun tetap berbagi sumber daya infrastruktur yang esensial.

1. Implementasi Stack Modern

  • Runtime: Beralih ke FrankenPHP (Alpine) untuk container berperforma tinggi dengan konsumsi memori yang rendah.
  • Reverse Proxy: Menerapkan Caddy Web Server untuk menangani terminasi SSL otomatis dan routing domain bagi seluruh 50+ aplikasi.
  • Database: Container MariaDB tersentralisasi dengan pengelolaan persistent volume untuk mengoptimalkan penggunaan sumber daya.

2. Otomatisasi & Tooling

Untuk menangani skala 50+ domain, saya mengembangkan tooling khusus:

  • Script Provisioning Massal: Sebuah Bash script (provision_server_dirs.sh) yang membaca inventaris CSV lalu secara otomatis membuat struktur direktori dan file docker-compose.yml.
  • Dockerfile Terstandardisasi: Template multi-stage build yang mengoptimalkan ukuran image sekaligus menyeragamkan environment di seluruh proyek.

3. Pipeline CI/CD

Membangun pipeline GitLab CI/CD yang mendukung:

  • Build Otomatis: Penandaan image secara dinamis berdasarkan tanggal.
  • Deployment Aman: Trigger deployment berbasis SSH yang menarik image terbaru dan me-restart container dengan strategi zero-downtime.

Teknologi yang Digunakan

  • Docker & Docker Compose: Untuk containerization dan orkestrasi.
  • FrankenPHP: Sebagai application server modern berperforma tinggi.
  • GitLab CI/CD: Untuk mengotomatiskan pipeline build, test, dan deploy.
  • Bash Scripting: Untuk provisioning dan otomatisasi infrastruktur.
  • Caddy: Sebagai reverse proxy modern dengan HTTPS otomatis.
  • MariaDB: Untuk pengelolaan data secara tersentralisasi.

Dampak & Hasil

  • Konsistensi Environment 100%: Menghilangkan persoalan “works on my machine”.
  • Deployment 90% Lebih Cepat: Waktu deployment berkurang drastis melalui otomatisasi CI/CD.
  • Keamanan Lebih Baik: Isolasi penuh antar aplikasi sehingga mencegah kontaminasi silang.

Proyek ini menunjukkan kemampuan saya dalam menangani perubahan infrastruktur berskala besar sekaligus membangun tooling khusus untuk menyelesaikan persoalan operasional yang kompleks.

Silakan lihat script otomatisasinya di GitHub Repository atau hubungi saya untuk mendiskusikan solusi DevOps bagi bisnis Anda.

call to action

Siap membangun proyek bersama saya?

Saya siap membantu membangun, mengembangkan, dan meluncurkan proyek Anda berikutnya — kirim pesan sekarang dan ayo kita mulai!

Mulai Sekarang