DevOps

[바미] 도커 내부의 PM2로 실행한 프로젝트가 DB connection이 실패할 때

Bami 2025. 1. 31. 02:51
728x90
반응형

결론

vim /etc/hosts

에서 

127.0.0.1       localhost
# ::1           localhost ip6-localhost ip6-loopback

부분을 주석하니 해결 되었습니다.

 

그 다음 부분은 제가 DB 연결을 위해 시도해 본 부분들입니다.

 

그 외 시도한 부분들

.env 값을 제대로 가져오는 지 확인

require('dotenv').config();
logger.info('🔹 PM2 실행 환경에서 RDB_HOST:', process.env.RDB_HOST)

이 부분에서 제대로 가져오지 않아 

 

pm2 <프로젝트 시작 명령어>--name backend --interpreter nodemon --update-env --env production

이런 식으로 pm2가 실행 되었을 때 환경변수가 강제로 적용되도록 실행 옵션에 추가시켰습니다.

 

pm2 env <PM2 NAME> 또는 pm2 env <pm2 ID>

로 확인.

MySQL이 네트워크 포트를 사용하도록 설정 변경

vim /etc/mysql/mysql.conf.d/mysqld.cnf

여기에서 

bind-address = 0.0.0.0

로 변경

service mysql restart

mysql 재시작

ecosystem.config.js 생성 후 pm2 재적용

프로젝트에 맞는 config 설정 후 

pm2 start ecosystem.config.js

재시작

 

직접 쉘에 입력하여 연결

node -e "
require('mysql2').createConnection({
    host: <host>,
    user: <user>,
    password: <password>,
    database: <database>,
    port: <port>
}).connect(err => {
    if (err) console.error('❌ MySQL 연결 실패:', err.message);
    else console.log('✅ MySQL 연결 성공!');
});
"

 

 

 

728x90
반응형