Sertifikat yang diterbitkan oleh Let's Encrypt disimpan di dalam volume Docker. Jika Anda membangun ulang nginx-proxy
atau nginx-proxy-acme
dengan docker-compose down -v
, semua volume yang tidak didefinisikan sebagai external: true
akan dihapus, termasuk volume tempat sertifikat disimpan. Ini akan menyebabkan sertifikat Anda hilang dan Anda harus meminta ulang, berpotensi menabrak rate limit lagi.
Memahami Cara Kerja Volume dan Sertifikat
Dalam konfigurasi docker-compose.yml
Anda, ada bagian volumes
di bagian paling bawah:
volumes:
certs:
vhost.d:
html:
# ... volume lain
Ini adalah volume bernama (named volumes) yang dibuat dan dikelola oleh Docker.
certs
: Volume inilah tempatnginx-proxy-acme
menyimpan semua sertifikat SSL yang berhasil diterbitkan oleh Let's Encrypt.vhost.d
: Digunakan olehnginx-proxy
untuk konfigurasi tambahan per virtual host.html
: Digunakan olehnginx-proxy
untuk halaman default atau custom.
Kapan Volume Ini Dihapus?
Volume bernama seperti certs
tidak akan dihapus secara otomatis ketika Anda menjalankan docker-compose down
(tanpa -v
). Mereka hanya akan dihapus jika Anda secara eksplisit menambahkan -v
(yaitu docker-compose down -v
) atau jika Anda menghapusnya secara manual (docker volume rm <volume_name>
).
Strategi yang Benar Saat Membangun Ulang
Jika Anda hanya mengubah kode aplikasi (PHP, Flask, React) atau konfigurasi spesifik aplikasi Anda (seperti Dockerfile
di php/
, backend/
, frontend/
, atau nginx.conf
internal mereka), Anda tidak perlu menghapus volume certs
.
Begini cara yang benar untuk membangun ulang tanpa kehilangan sertifikat:
-
Jika Anda hanya mengubah source code aplikasi atau
Dockerfile
spesifik untuk service tersebut (misalnyabackend
,frontend
,php-app
):- Anda bisa menargetkan hanya service tersebut untuk dibangun ulang dan dijalankan:
Contoh:Bashdocker-compose up -d --build <nama_service_yang_berubah>
docker-compose up -d --build backend
Ini akan membangun ulang imagebackend
dan me-restart containerebook_backend
.
- Anda bisa menargetkan hanya service tersebut untuk dibangun ulang dan dijalankan:
-
Jika Anda mengubah konfigurasi
docker-compose.yml
yang memengaruhi service tertentu (misalnya, menambahkan variabel lingkungan dibackend
):- Anda bisa me-recreate service tersebut tanpa membangun ulang image (jika
Dockerfile
tidak berubah) atau membangun ulang image jikaDockerfile
juga berubah: Contoh:Bashdocker-compose up -d --build <nama_service_yang_berubah> --force-recreate
docker-compose up -d --build backend --force-recreate
- Anda bisa me-recreate service tersebut tanpa membangun ulang image (jika
-
Jika Anda mengubah konfigurasi
nginx-proxy
ataunginx-proxy-acme
(misalnya menambahkan subdomain baru diVIRTUAL_HOST
atauLETSENCRYPT_HOST
):- Anda perlu me-restart kedua service ini agar mereka membaca konfigurasi baru dan memicu permintaan sertifikat jika diperlukan. Anda tidak perlu menghapus volumenya.
Bash
docker restart nginx-proxy-acme docker restart nginx-proxy
- Kemudian, pantau log
nginx-proxy-acme
untuk memastikan sertifikat diterbitkan atau diperbarui tanpa masalah.
- Anda perlu me-restart kedua service ini agar mereka membaca konfigurasi baru dan memicu permintaan sertifikat jika diperlukan. Anda tidak perlu menghapus volumenya.
-
Kapan Menggunakan
docker-compose down -v
(Menghapus Volume)?- Hanya jika Anda ingin menghapus semua data persisten dan memulai dari nol (misalnya, saat debugging masalah inisialisasi database atau jika volume sertifikat korup).
- Jika Anda menggunakan
docker-compose down -v
, siapkan diri untuk menghadapi rate limit Let's Encrypt lagi jika Anda segera mencoba meminta sertifikat untuk domain yang sama. Ini harus menjadi opsi terakhir setelah semua troubleshooting lain.
Kesimpulan
Strategi terbaik adalah tidak pernah menggunakan docker-compose down -v
kecuali Anda benar-benar ingin menghapus semua data persisten. Untuk perubahan kode atau konfigurasi, cukup targetkan service yang relevan untuk dibangun ulang atau di-restart saja.
Dengan demikian, sertifikat Let's Encrypt Anda akan tetap aman di volume certs
, dan Anda tidak perlu khawatir tentang terhapusnya sertifikat saat Anda melakukan perubahan pada aplikasi atau Docker Compose.