나는 기존에 windows 에서 mariadb를 3307 포트로 사용하고 있었다.
기존 윈도우에 다운받은 mariadb를 유지한채
docker에서 mariadb를 다운 받았다.
docker pull mariadb;
그러면 mariadb 이미지가 추가되었고
그러고 나서
docker run --name mariadb -d -p 3308:3308 --restart=always -e MYSQL_ROOT_PASSWORD=013174 mariadb
명령어로
3308 포트로 mariadb를 실행 시켰다.
그러면 컨테이너가 생성 됐다.
그 다음에
msa의 discovery-service(유레카), config, apigateway, order-service를 실행시키고
order-service의 h2-console에서 mariadb 3308포트로 접속하는데
다음과 같은 에러가 발생했다.
java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=localhost)(port=3308)(type=master) : Could not connect to localhost:3308 : unexpected end of stream, read 0 bytes from 4 (socket was closed by server)
이를 해결 하기 위해 검색해본 결과
도커로 실행한 mariadb에서 다음 명령어로 port를 확인해보면 3306 이었다.
하지만 docker로 실행시킨 mariadb 컨테이너는 3308 포트를 사용하고 있어서
/etc/mysql/my.cnf 파일에 있는 port를 고정으로 3308로 추가해주면 문제가 없으나
이미지 레이어를 이런식으로 수정하는건 바람직하지 않기 때문에
포트바인딩을 사용했다.
기존의 컨테이너를 중지 -> 삭제 후
docker run --name mariadb -d -p 3308:3306 --restart=always -e MYSQL_ROOT_PASSWORD=비민번호 mariadb
다음과 같이 포트바인딩해서 컨테이너를 실행하면
스프링 h2 db로 접속이 잘된다.
'개발일지 > 문제 해결' 카테고리의 다른 글
gradle build 에러 (1) | 2024.10.31 |
---|---|
ami 이미지를 인스턴스 연결 (0) | 2024.07.30 |
Exception 수천번 발생하는에러... (0) | 2022.09.10 |
카프카 토픽 삭제할 때 문제 (0) | 2022.09.06 |
카프카 커넥트 실행 오류 [Failed to find any class that implements Connector and which name matches io.confluent.connect.jdbc.JdbcSourceConnector, available connectors are] (0) | 2022.09.01 |