Migrasi dari Heroku
Zenavo membangun dan menjalankan aplikasi Heroku dengan sedikit perubahan: Zenavo membangun dari Git dengan zbpack atau Dockerfile Anda sebagai pengganti buildpack, dan mengatur PORT dengan cara yang sama. Aplikasi Anda lalu berjalan di server milik Anda sendiri.
Padanan Heroku di Zenavo
| Heroku | Zenavo |
|---|---|
| Aplikasi | Proyek di satu server |
Proses web di Procfile | Layanan yang dibangun dari repositori, dengan port HTTP |
worker dan proses lain | Satu layanan tambahan per proses dari repositori yang sama, dengan perintah itu dan tanpa port HTTP |
| Buildpack | zbpack, atau Dockerfile Anda |
Fase release | Perintah yang dijalankan sebelum aplikasi, di perintah start |
| Config vars | Variabel lingkungan |
| Heroku Postgres, Heroku Redis | Layanan database di proyek |
| Dyno dan scaling | Replika dan batas sumber daya |
| Automated Certificate Management | Sertifikat Let's Encrypt otomatis |
| Pipeline dan review app | Tidak ada padanannya: kloning proyek untuk staging |
| Heroku Scheduler | Belum ada job terjadwal: jalankan layanan worker dengan scheduler di aplikasi |
1. Deploy aplikasi
- Tambahkan server dan buat proyek.
- Add Service → GitHub, pilih repositori dan branch, lalu periksa Build Plan Preview.
- Atur perintah start bila tebakan zbpack berbeda dari baris
web:diProcfileAnda:ZBPACK_START_COMMANDdi Settings → Build → zbpack options, atau Startup Command di Settings (Pengaturan Layanan). Letakkan perintahrelease:di depannya, misalnyash -c "bin/rails db:migrate && bin/rails server -b 0.0.0.0". - Untuk setiap jenis proses lain, tambahkan repositori itu lagi dengan perintah proses tersebut dan tanpa port HTTP.
Aplikasi yang sudah mendengarkan di $PORT tidak perlu diubah; dengarkan juga di 0.0.0.0.
2. Salin variabel
Ekspor config vars lalu tempel di tab Variable layanan → Edit Raw Variables, atau atur dengan CLI:
heroku config --shell -a my-app > heroku.env
zenavo env set --file heroku.env -s webJangan salin DATABASE_URL, REDIS_URL, dan variabel add-on lainnya: arahkan ke layanan database baru, seperti DATABASE_URL=${POSTGRESQL_CONNECTION_STRING}. Hapus heroku.env setelahnya; file itu berisi rahasia.
3. Pindahkan database
Tambahkan PostgreSQL ke proyek dengan versi mayor yang sama seperti di Heroku (heroku pg:info menampilkannya). Backup Heroku sendiri memakai format custom pg_dump, yang tidak dibaca Zenavo, jadi buat dump SQL biasa:
pg_dump --no-owner --no-acl "$(heroku config:get DATABASE_URL -a my-app)" | gzip > heroku.sql.gzUnggah heroku.sql.gz di tab Backup & Restore database baru dan pulihkan ke database yang masih kosong (Mengunggah backup). Aktifkan mode pemeliharaan terlebih dahulu (heroku maintenance:on) agar tidak ada yang ditulis setelah dump. Unggahan dibatasi 2 GB.
Heroku Redis biasanya hanya cache: mulai Redis baru dalam keadaan kosong.
4. Alihkan domain
Pasang setiap domain di tab Networking layanan. Domain Heroku memakai CNAME ke herokudns.com; ganti dengan record A ke alamat IP server. Sertifikat diterbitkan setelah record ter-resolve (Domain & HTTPS). Pertahankan aplikasi Heroku sampai aplikasi baru sudah melayani trafik untuk beberapa waktu.