오류일기

Docker로 H2 컨테이너로 띄우기(포트 문제)

sami355 2024. 4. 6. 16:47

상황 설명

개인 프로젝트를 하며 H2를 컨테이너로 띄워야 하는 일이 생겼습니다. 저는 도커 허브에서 다음과 같이 h2 DB를 이미지로 빌드해놓은 것을 발견했습니다.

(도커 허브)

 

 

+ 해당 이미지를 받을 경우 다음과 같이 경고창이 나오지만 다른 방법이 없기에 그대로 사용해야 할 듯 합니다.

아니면 직접 h2를 curl로 설치해야 하는것도 하나의 방법인듯 합니다.

 

이후의 컨테이너화 하는 방법은 다른 블로그에 잘 쓰여 있길래 링크를 첨부하겠습니다.

 

그러나 24년 4월 기준으로 해당 이미지를 컨테이너화해서 로컬머신에서 접속하면 다음과 같이 접속이 불가능하다고 나옵니다.

저는 이 문제를 해결하기 위해 다음과 같이 접근하였습니다.

시행착오

DB의 포트 번호를 설정하는 설정파일이 있으리라 생각하였습니다. 저는 H2 DB의 설정정보가 저장되어 있는 설정 파일을 찾으려 하였으나 쉬운 일은 아니였고 조금 더 찾아보니 org.h2.tools.Shell가 H2의 소스코드가 적혀 있는 코드라고 합니다. 하지만 그러나 포트번호를 수정하기 위해 해당 파일 전부 까서 찾아보는것은 배보다 배꼽이 크다는 판단을 하게 되었습니다.

 

해결법

저는 해당 이미지에서 열려있는 포트가 몇번인지 확인하고자 아무런 설정을 주지 않고 h2 DB 이미지를 컨테이너화 하였습니다. 그리고 리눅스 명령어를 통해 열려있는 포트가 몇번인지 확인하고자 하였습니다. 

netstat -tuln

 

그러나 다음과 같이 netstat 명령어를 인식하지 못하는 문제가 발생하였고 컨테이너에 net-tools를 설치하여 이 문제를 해결하고자 합니다.

 

net-tools를 설치하는 과정입니다.

apt update

 

apt install net-tools

 

이후 다시 어느 포트가 열려있는지 확인해보면 다음과 같은 결과를 얻을 수 있습니다.

 

덕분에 저는 h2 이미지가 기본으로 사용하는 포트 번호가 81번이라는 것을 알게 되었고 이제 h2 도커 이미지를 컨테이너화할때 81번으로 포트포워딩하면 정상작동하는 것을 확인할 수 있습니다.