Rumah >pembangunan bahagian belakang >Golang >Mengapa Apl My Go Mendapat 'Sambungan Ditolak' untuk Docker Mengarang Postgres Apabila pgAdmin Berjaya Bersambung?

Mengapa Apl My Go Mendapat 'Sambungan Ditolak' untuk Docker Mengarang Postgres Apabila pgAdmin Berjaya Bersambung?

Patricia Arquette
Patricia Arquetteasal
2024-12-24 12:17:15275semak imbas

Why Does My Go App Get

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!

Kenyataan:
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