Rumah > pembangunan bahagian belakang > Golang > Mengapa aplikasi Go saya menolak sambungan ke pangkalan data Docker Compose Postgres saya, walaupun pgAdmin berjaya menyambung?

Mengapa aplikasi Go saya menolak sambungan ke pangkalan data Docker Compose Postgres saya, walaupun pgAdmin berjaya menyambung?

Susan Sarandon
Lepaskan: 2024-12-31 16:03:10
asal
176 orang telah melayarinya

Why is my Go application refusing a connection to my Docker Compose Postgres database, despite pgAdmin connecting successfully?

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
Salin selepas log masuk

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
Salin selepas log masuk

Kemudian, tentukan rangkaian di hujung fail docker-compose.yaml anda:

networks:
  mynet:
    name: my-shared-db-network
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan