Solusi Update Resource Aplikasi ke Server: Git, Docker, atau FTP?
🚀 Solusi Enak Update Resource Aplikasi ke Server:
Git, Docker, atau FTP?
![]() |
| Solusi Update Resource Aplikasi ke Server: Git, Docker, atau FTP? |
Pernah bingung cara paling enak dan minim drama buat update file (kode, gambar, CSS, atau asset) ke dalam server? Antara pake Git, Docker, atau jaman old FTP? Tenang, kita bedah tuntas plus langkah suksesnya sampai benar-benar berhasil! 💻
📦 1. Git Pull — Si Andalan Developer
✅ Paling umum 🔁 Rollback gampang Cocok buat update kode dan resource kecil sampai menengah.
Langkah sukses pake Git:
- Clone repo pertama kali di server:
git clone https://github.com/username/aplikasi.git /var/www/app - Setiap mau update, jalankan:
cd /var/www/app && git pull origin main - (Pro tips) Auto update tiap 5 menit pake cron:
*/5 * * * * cd /var/www/app && git pull && systemctl reload nginx - Biar makin canggih: pasang webhook dari GitHub/GitLab ke server lo. Setiap push, server auto pull.
✅ Plus: Ada history perubahan, bisa balik ke versi sebelumnya, nggak perlu rebuild image.
❌ Minus: Kurang cocok buat file besar (video, asset >100MB), harus buka akses SSH.
❌ Minus: Kurang cocok buat file besar (video, asset >100MB), harus buka akses SSH.
🐳 2. Docker + Registry — Modern & Rapi
📦 Container 🔄 Konsisten Cocok kalau aplikasi lo sudah di-dockerize dari awal.
Langkah sukses update resource via Docker:
- Build image baru dengan resource terbaru:
docker build -t user/app:v2 . - Push ke registry (Docker Hub / pribadi):
docker push user/app:v2 - Di server: pull dan ganti container
docker pull user/app:v2 docker stop app && docker rm app docker run -d --name app -p 80:80 user/app:v2 - Alternatif pakai
docker-compose+ Watchtower untuk auto update.
✅ Plus: Lingkungan 100% konsisten, rollback tinggal ganti tag image.
❌ Minus: Build ulang image walau cuma ganti 1 file kecil. Perlu private registry untuk production.
❌ Minus: Build ulang image walau cuma ganti 1 file kecil. Perlu private registry untuk production.
📁 3. FTP / SFTP — Tradisional tapi Darurat
🛠️ Manual 🌍 Hosting murah Cocok buat shared hosting atau sekali-sekali ganti file statis.
Langkah sukses pake FTP:
- Konek via FileZilla atau CLI:
sftp user@server-ip - Upload file langsung:
put resource.css /public/assets/ - Overwrite file yang lama (hati-hati, nggak ada backup otomatis).
✅ Plus: Gampang, nggak perlu SSH atau git.
❌ Minus: Gak ada versi, rawan human error, susah diotomatisasi.
❌ Minus: Gak ada versi, rawan human error, susah diotomatisasi.
📊 Perbandingan Cepat: Git vs Docker vs FTP
| Kriteria | Git | Docker | FTP |
|---|---|---|---|
| Kecepatan update resource kecil | ⚡ Cepat (pull saja) | 🐢 Lambat (build + push + pull) | ⚡ Cepat (upload langsung) |
| Rollback / history | ✅ Ada (git reset) | ✅ Ganti tag image | ❌ Tidak ada |
| Otomatisasi | ✅ Webhook / cron | ✅ CI/CD + Watchtower | ❌ Manual banget |
| Cocok untuk resource besar (video, dataset) | ❌ Kurang (repo jadi berat) | ✅ (via volume atau object storage) | ✅ (bisa resume) |
| Kebutuhan akses server | SSH | SSH + Docker daemon | FTP/SFTP |
🏆 Rekomendasi Akhir: Pilih yang Mana?
- 📌 Buat kode aplikasi + asset ringan (JS, CSS, gambar kecil): GIT + Webhook adalah yang paling enak dan banyak dipakai.
- 📌 Buat yang sudah full containerized + tim besar: Docker + CI/CD (GitHub Actions push ke registry, lalu server auto deploy).
- 📌 Cuma punya shared hosting tanpa SSH, terpaksa: FTP — tapi usahakan pindah ke Git kalau bisa.
✨ Resep sukses update resource tanpa drama:
1. Pastikan koneksi server stabil.
2. Backup dulu sebelum update (kalau pake Git, cukup commit & tag).
3. Gunakan rolling update atau blue-green kalau aplikasi production.
4. Jangan lupa reload service setelah update (nginx, php-fpm, dll).
1. Pastikan koneksi server stabil.
2. Backup dulu sebelum update (kalau pake Git, cukup commit & tag).
3. Gunakan rolling update atau blue-green kalau aplikasi production.
4. Jangan lupa reload service setelah update (nginx, php-fpm, dll).
🛠️ Contoh Script Auto Update Paling Sederhana (Git + Cron)
#!/bin/bash
# /usr/local/bin/auto-pull.sh
cd /var/www/myaplikasi
git pull origin main
# reload layanan web
systemctl reload nginx || systemctl restart apache2
echo "$(date) - Update selesai" >> /var/log/auto-pull.log
Tambahkan ke crontab (crontab -e):
*/5 * * * * /usr/local/bin/auto-pull.sh
