Docker-Compose Postgres Connection Ditolak: Menyelesaikan Isu Sambungan
Dalam persediaan docker-compose yang melibatkan Postgres DB dengan pg-admin dan Go, anda mungkin menghadapi masalah sambungan antara Go dan Postgres, walaupun pg-admin berjaya menyambung. Artikel ini menyelidiki kemungkinan punca dan menyediakan penyelesaian.
Punca Punca
Isu ini timbul disebabkan nama hos yang dinyatakan dalam URI sambungan pangkalan data. Walaupun pembolehubah persekitaran menunjuk kepada "postgres," nama bekas/perkhidmatan Docker untuk Postgres ialah "pangkalan data." Percanggahan ini menghalang Go daripada membuat sambungan.
Penyelesaian
Terdapat dua penyelesaian yang mungkin:
Pilihan 1: Tukar Nama Bekas
Ubah suai fail karang Docker untuk menukar nama perkhidmatan daripada "pangkalan data" kepada "postgres."
database: build: database restart: always hostname: postgres
Pilihan 2: Gunakan Medan Nama Hos Eksplisit
Sebagai alternatif, anda boleh menambah medan nama hos eksplisit pada perkhidmatan Postgres konfigurasi:
database: build: database restart: always hostname: postgres
Mana-mana daripada penyelesaian ini akan memastikan bahawa nama hos dalam URI sambungan sepadan dengan Nama bekas Postgres, membolehkan Go mewujudkan sambungan yang berjaya.
Pertimbangan Tambahan
Untuk berbilang perkhidmatan kontena berkomunikasi dengan berkesan, anda boleh mempertimbangkan untuk membuat rangkaian khusus. Untuk melakukan ini, tambahkan bahagian "rangkaian" pada setiap perkhidmatan yang anda inginkan pada rangkaian yang sama.
database: # ... networks: - mynet backend: # ... networks: - mynet
Akhir sekali, tentukan rangkaian pada penghujung fail karang:
networks: mynet: name: my-shared-db-network
Atas ialah kandungan terperinci Mengapa Apl My Go Mendapat 'Sambungan Ditolak' untuk Docker Mengarang Postgres Apabila pgAdmin Berjaya Bersambung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!