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 중국어 웹사이트의 기타 관련 기사를 참조하세요!