백엔드 + DB 컨테이너 연결 오류
부트캠프 스프린트 4 프로젝트에서 도커를 이용하여 테스트용 컨테이너를 만들어보는 실습을 진행했다.
3월 28일에 DB 컨테이너를 만들었고, 백엔드 컨테이너를 만들며 DB와 연결해주었다. 3월 29일에 프론트엔드 컨테이너를 만들고, 백그라운드에서 실행했더니 db, 백엔드, 프론트엔드 모두 컨테이너가 잘 실행되는 것을 확인하였다.
프론트엔드 서버도 잘 생성이 되었는지 확인하기 위해 인터넷 창을 이용해서 localhost:3000/login
접근하였더니 다음과 같은 화면이 보여졌다.
프론트엔드를 build를 하지 않은 상태로 컨테이너를 실행하니 초기값인 “서버오픈”만 렌더된 것이었다.
그래서 프론트엔드 프로젝트를 npm run build
명령어를 사용해서 빌드를 새롭게 해줬고, 컨테이너 이미지를 다시 만든 다음에 다시 컨테이너를 실행시켜주었다.
그랬더니, 백엔드가 DB와 연결하지 못하는 오류가 갑자기 발생하였다. docker 목록을 확인하면 모든 컨테이너들이 정상적으로 실행중이었는데,백엔드로 요청을 보내면 500 서버 오류가 발생했다.
db를 사용하고 있지 않은 /healthcheck
요청에 대한 응답은 성공적으로 받아오고 있기 때문에 백엔드 서버와 db 서버가 제대로 연결되지 않았다는 생각이 들어 하나하나 체크해보았다.
먼저 db 서버가 제대로 구축되었는지 다시 한번 확인해보았다.
데이터베이스, 테이블 모두 제대로 들어있는 것을 확인하였고, 백엔드 프로젝트의 코드를 확인해 보았다.
강사님 코드를 그대로 따라쳤더니 ENV 값이 다르게 설정되어 DB와 연결을 하지 못한 것이었다.
- 강사님 코드
1
2
DB_HOST:
DB_PORT:
- 내 코드
1
2
HOST:
MARIA_DB_PORT:
앞으로의 강의를 위해 강사님과 ENV 설정값을 맞추는게 낫을 것 같아서 ENV의 값을 변경했다. 변경하고 나서 다시 컨테이너 이미지를 생성해주었고, 컨테이너를 다시 실행하니 제대로 값을 받아오는 것을 확인할 수 있었다.