Rumah >pembangunan bahagian belakang >Golang >Mengapa Aplikasi My Go Mendapat Ralat 'Sambungan Ditolak' Semasa Menyambung ke Pangkalan Data Postgres Karang Docker?

Mengapa Aplikasi My Go Mendapat Ralat 'Sambungan Ditolak' Semasa Menyambung ke Pangkalan Data Postgres Karang Docker?

Barbara Streisand
Barbara Streisandasal
2024-12-21 01:04:11114semak imbas

Why Does My Go Application Get a

Penolakan Sambungan Docker Compose Postgres

Masalah:

Apabila cuba mewujudkan sambungan pangkalan data daripada Pergi ke pangkalan data Postgres yang berjalan di Docker Compose, ralat "dail tcp 127.0.0.1:5432: sambung: sambungan ditolak" berlaku.

Penyelesaian:

Isu ini berpunca daripada rujukan nama hos yang salah dalam rentetan sambungan.

Rujukan Nama Hos:

The nama hos pangkalan data dirujuk sebagai "postgres" dalam pembolehubah persekitaran "POSTGRES_HOST". Walau bagaimanapun, nama bekas/perkhidmatan untuk pangkalan data dalam fail docker-compose ialah "pangkalan data."

Penyelesaian:

Untuk menyelesaikan isu, terdapat dua pilihan :

  1. Tukar nama kontena/perkhidmatan: Dalam fail karang docker, tukar nama perkhidmatan "pangkalan data" kepada "postgres."
  2. Tambahkan nama hos eksplisit: Tambahkan medan "nama hos" pada perkhidmatan "pangkalan data" dalam fail karang docker, secara eksplisit menetapkannya kepada "postgres."

Tatarajah Rangkaian (Pilihan):

Untuk pengasingan dan komunikasi yang lebih baik antara perkhidmatan, adalah disyorkan untuk mencipta rangkaian khusus untuk pangkalan data dan bekas aplikasi. Untuk melakukan ini:

  1. Tambahkan konfigurasi "rangkaian" pada setiap perkhidmatan yang sepatutnya menggunakan rangkaian kongsi.
  2. Tentukan rangkaian di hujung fail docker-compose dengan nama dan pilihan pilihan.

Contoh:

database:
  # ...

  networks:
    - mynet

backend:
  # ...

  networks:
    - mynet

networks:
  mynet:
    name: my-shared-db-network

Atas ialah kandungan terperinci Mengapa Aplikasi My Go Mendapat Ralat 'Sambungan Ditolak' Semasa Menyambung ke Pangkalan Data Postgres Karang Docker?. 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