Rumah >pembangunan bahagian belakang >Golang >Mengapa aplikasi Go saya menolak sambungan ke pangkalan data Docker Compose Postgres saya, walaupun pgAdmin berjaya menyambung?
Sambungan Postgres Docker-Compose Ditolak: Menyelesaikan Isu Sambungan
Dalam persediaan Docker-Compose dengan Postgres, anda menerangkan isu di mana anda boleh menyambung ke Postgres menggunakan pg-admin tetapi menghadapi masalah sambungan apabila cuba menyambung dari Pergi.
Masalah berpunca daripada cara anda merujuk nama hos pangkalan data dalam kod Go anda. Anda menggunakan POSTGRES_HOST sebagai postgres, iaitu nama bekas/perkhidmatan untuk Postgres dalam konfigurasi Docker-Compose anda. Walau bagaimanapun, dalam kod Go anda, anda sedang menyambung ke pangkalan data, iaitu nama bekas sebenar untuk perkhidmatan pangkalan data.
Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:
Pilihan 1: Tukar Nama Bekas dalam Docker-Compose
Tukar nama perkhidmatan pangkalan data anda dalam fail docker-compose.yaml anda daripada pangkalan data kepada postgres. Ini akan menjadikan nama bekas dan nama hos yang anda gunakan dalam kod Go anda sepadan.
Pilihan 2: Medan Nama Hos Eksplisit
Sebagai alternatif, anda boleh menambah nama hos eksplisit medan ke perkhidmatan pangkalan data dalam konfigurasi Docker-Compose anda:
database: build: database restart: always hostname: postgres
Ini menetapkan nama hos bekas pangkalan data kepada postgres, yang sepadan dengan nama hos yang anda rujuk dalam kod Go anda.
Pertimbangan Tambahan
Selain itu, anda mungkin ingin mempertimbangkan untuk membuat rangkaian khusus dalam Docker-Compose anda konfigurasi untuk memastikan bekas boleh berkomunikasi antara satu sama lain dengan selamat dan cekap. Begini cara untuk melakukannya:
Dalam fail docker-compose.yaml anda, tambahkan bahagian rangkaian pada setiap perkhidmatan yang sepatutnya menggunakan rangkaian khusus, seperti ini:
database: # ... networks: - mynet backend: # ... networks: - mynet
Kemudian, tentukan rangkaian di hujung fail docker-compose.yaml anda:
networks: mynet: name: my-shared-db-network
Ini akan mencipta rangkaian baharu bernama my-shared-db-network yang boleh digunakan oleh bekas anda untuk berkomunikasi.
Dengan melaksanakan salah satu daripada penyelesaian ini, anda seharusnya berjaya menyambung ke pangkalan data Postgres anda daripada Go dalam persediaan Docker-Compose anda.
Atas ialah kandungan terperinci Mengapa aplikasi Go saya menolak sambungan ke pangkalan data Docker Compose Postgres saya, walaupun pgAdmin berjaya menyambung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!