saya asumsikan kalian memisahkan antara container database dan container khusus aplikasi, tampilannya seperti berikut
ketika saya ingin menggunakan koneksi database pada container database-container untuk aplikasi nodejs saya, muncul error seperti berikut
berdasarkan error yang Anda alami (ECONNREFUSED 127.0.0.1:3306
) menunjukkan bahwa aplikasi Anda tidak bisa terhubung ke server MySQL pada localhost
dengan port 3306. untuk mengatasi hal ini kita bisa menggunakan host.docker.internal. host.docker.internal
adalah hostname khusus yang dapat digunakan di dalam container Docker untuk merujuk ke host (mesin lokal) tempat Docker sedang berjalan. Ini berguna dalam situasi di mana aplikasi yang berjalan di dalam container perlu mengakses layanan atau aplikasi yang berjalan di host luar, misalnya, jika Anda menjalankan MySQL atau layanan lain di mesin lokal dan container ingin terhubung ke layanan tersebut.
dengan begitu anda bisa mengakses database-container yang ada di docker
selamat mencoba 🙂
Note :
1. Hanya Tersedia di Docker Desktop: host.docker.internal
didukung di Docker Desktop untuk Windows dan macOS, tetapi tidak secara default di Linux. Pada Linux, Anda perlu menggunakan solusi lain seperti mengatur jaringan bridge atau menghubungkan melalui alamat IP host.
2. Jaringan Internal Docker: Tidak diperlukan untuk container yang sudah terhubung melalui jaringan internal Docker, karena container dapat saling mengakses menggunakan nama service mereka di dalam satu jaringan Docker.