Masalah
Anda mencoba mengakses DB dengan IP/nama host yang salah. Seperti yang Anda lihat, mengakses localhost
di wadah pegas akan menyelesaikan ke wadah itu dan tidak ada 27017
port mendengarkan di sana. Saat Anda menjalankan toples di host buruh pelabuhan, ia memiliki 27017
port tersedia, itu sebabnya ia bekerja.
Solusi
Anda dapat menggunakan --hostname
tandai di docker run
perintah untuk mengatur nama host wadah DB sehingga Anda dapat menghubungkannya dari wadah Spring menggunakan nama host.
Solusi yang lebih baik, bagaimanapun, adalah dengan menggunakan file docker-compose dan memulai container menggunakan docker-compose up
.
Pertama-tama gunakan
MongoClient mongo = new MongoClient("db", 27017));
di kode Spring Anda dan buat gambar kode Anda.
Setelah itu, ikuti langkah-langkah di bawah ini untuk memulai container:
A) Buat file Tulis
Buat file bernama docker-compose.yml
dengan konten berikut:
version: "2.1"
services:
app:
# replace imageName with your image name (block in your case)
image: imageName:tag
ports:
- 9876:4000 # Replace the port of your application here if used
depends_on:
- db
db:
image: mongo
volumes:
- ./database:/data
ports:
- "27017:27017"
B) Jalankan file penulisan
Jalankan perintah berikut untuk menjalankan file penulisan:docker-compose up -d