>데이터 베이스 >MySQL 튜토리얼 >Node.js 애플리케이션에서 MySQL 컨테이너에 연결할 때 ECONNREFUSED가 발생하는 이유는 무엇입니까?

Node.js 애플리케이션에서 MySQL 컨테이너에 연결할 때 ECONNREFUSED가 발생하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-12 01:43:02885검색

Why am I getting ECONNREFUSED when connecting to MySQL container from my Node.js application?

MySQL Docker 컨테이너에 연결하는 동안 Node.js ECONNREFUSED

MySQL 컨테이너 및 Node.js 웹 서비스와 관련된 Docker Compose 설정에서 , Node.js에서 MySQL에 연결하면 Docker 링크가 설정되고 데이터베이스가 올바르게 구성되었음에도 불구하고 ECONNREFUSED 오류가 발생했습니다.

문제 설명

이 문제는 Docker 포트 매핑에 대한 오해에서 비롯되었습니다. Docker compose 파일에서:

ports:
  - "3307:3306"

이는 호스트 포트 3307을 컨테이너 포트 3306에 매핑합니다. 이렇게 하면 호스트에서 MySQL 컨테이너의 데이터베이스에 대한 외부 액세스가 허용되지만 컨테이너의 내부 포트는 변경되지 않습니다. 듣고 있습니다.

해결 방법

문제로 인해 Node.js 구성 및 Docker 명령이 조정되었습니다.

Node.js 구성

const config = {
    host: 'mysql', // Use the Docker service name instead of 'localhost'
    database: 'mydb',
    port: '3306', // Connect to the container's native port
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
}

Docker 명령

command: ["./wait-for-it.sh", "mysql:3306"] // Wait for the MySQL container to start on port 3306

설명

Node.js 구성에서 Docker 서비스 이름(mysql)을 호스트로 사용하여 연결을 보장합니다. 호스트가 아닌 컨테이너에 대한 시도가 이루어집니다. 또한 대기 스크립트 인수를 3306으로 변경하여 MySQL이 컨테이너 내의 기본 포트에서 준비될 때까지 기다립니다.

이러한 변경 사항이 구현되면 ECONNREFUSED 오류가 해결되었으며 Node.js 애플리케이션이 MySQL Docker 컨테이너에 성공적으로 연결할 수 있습니다.

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

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