Docker-Compose Postgres 연결 거부: 연결 문제 해결
Postgres를 사용한 Docker-Compose 설정에서 다음과 같은 문제를 설명하셨습니다. pg-admin을 사용하여 Postgres에 연결할 수 있지만 연결을 시도할 때 연결 문제가 발생합니다. Go.
문제는 Go 코드에서 데이터베이스 호스트 이름을 참조하는 방식에서 발생합니다. Docker-Compose 구성에서 Postgres의 컨테이너/서비스 이름인 POSTGRES_HOST를 postgres로 사용하고 있습니다. 그러나 Go 코드에서는 데이터베이스 서비스의 실제 컨테이너 이름인 데이터베이스에 연결하고 있습니다.
이 문제를 해결하려면 다음 두 가지 옵션이 있습니다.
옵션 1: Docker-Compose에서 컨테이너 이름 변경
docker-compose.yaml 파일의 데이터베이스 서비스 이름을 데이터베이스에서 다음으로 변경합니다. postgres. 이렇게 하면 Go 코드에서 사용 중인 컨테이너 이름과 호스트 이름이 일치하게 됩니다.
옵션 2: 명시적 호스트 이름 필드
또는 명시적인 호스트 이름을 추가할 수 있습니다. 필드를 Docker-Compose 구성의 데이터베이스 서비스에 추가합니다.
database: build: database restart: always hostname: postgres
이것은 데이터베이스 컨테이너의 호스트 이름을 설정합니다. Go 코드에서 참조하는 호스트 이름과 일치하는 postgres에 연결합니다.
추가 고려 사항
또한 Docker 내에 전용 네트워크를 만드는 것을 고려할 수 있습니다. 컨테이너가 서로 안전하고 효율적으로 통신할 수 있도록 구성을 구성합니다. 방법은 다음과 같습니다.
docker-compose.yaml 파일에서 전용 네트워크를 사용해야 하는 각 서비스에 다음과 같이 네트워크 섹션을 추가합니다.
database: # ... networks: - mynet backend: # ... networks: - mynet
그런 다음 다음을 정의합니다. docker-compose.yaml 파일 끝에 있는 네트워크:
networks: mynet: name: my-shared-db-network
이렇게 하면 컨테이너가 통신하는 데 사용할 수 있는 my-shared-db-network.
이러한 솔루션 중 하나를 구현하면 Docker-Compose 설정 내 Go에서 Postgres 데이터베이스에 성공적으로 연결할 수 있습니다.
위 내용은 pgAdmin이 성공적으로 연결되었음에도 불구하고 Go 애플리케이션이 Docker Compose Postgres 데이터베이스에 대한 연결을 거부하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!