>데이터 베이스 >MySQL 튜토리얼 >내 Node.js 앱이 MySQL Docker 컨테이너에 연결할 때 ECONNREFUSED 오류가 발생하는 이유는 무엇입니까?

내 Node.js 앱이 MySQL Docker 컨테이너에 연결할 때 ECONNREFUSED 오류가 발생하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-11 00:01:03603검색

Why Does My Node.js App Get an ECONNREFUSED Error When Connecting to a MySQL Docker Container?

MySQL Docker 컨테이너 ECONNREFUSED에 대한 Node.js 연결

문제:

MySQL 및 Node.js 컨테이너가 연결된 Docker compose 파일을 사용하는 경우 포트 3307을 사용하여 MySQL 컨테이너에 연결을 시도하는 동안 Node.js 앱에 ECONNREFUSED 오류가 발생합니다.

분석:

Docker compose 파일은 호스트의 3307 포트를 컨테이너의 3306에 매핑합니다. 그러나 MySQL 컨테이너는 내부적으로 3306을 수신하고 있습니다. 이로 인해 Node.js가 컨테이너가 수신 대기 중인 포트가 아닌 호스트의 포트 3307에 연결을 시도하는 문제가 발생합니다.

해결책:

문제를 해결하려면 다음과 같이 MySQL 구성 및 Docker Compose 파일을 조정하십시오.

수정된 MySQL 구성:

const config = {
    host: 'mysql',  // Use the MySQL container DNS name
    database: 'mydb',
    port: '3306',  // Match the port the MySQL container is listening on
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
}

수정된 Docker Compose 파일:

command: ["/bin/bash", "./wait-for-it.sh", "mysql:3306"]  // Match the port MySQL is listening on

이러한 수정을 통해 이제 Node.js 앱이 올바른 포트를 사용하여 MySQL 컨테이너에 연결되며 ECONNREFUSED 오류가 해결됩니다.

위 내용은 내 Node.js 앱이 MySQL Docker 컨테이너에 연결할 때 ECONNREFUSED 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.