Docker (도커)를 사용하여 다양한 컨테이너를 활용할 때 네트워크 관련 문제를 경험할 수 있다.
필자의 경우 Spring Boot와 DB 서버간 네트워크 연결이 되어 있지 않아서
DB Connection Refused 오류가 발생하여 애를 먹었다.
이 경우 다음 방식을 통해서 네트워크를 연결할 수 있었다.
1. 프로젝트의 DB URL 변경
jdbc:mysql://컨테이너명:3306/mydb?useSSL=false
우선 자바 소스에서 DB URL 호스트명을 위와 같이 컨테이너명으로 변경한다.
만약 로컬 DB를 사용하고 있었다면 localhost라고 되어 있을 것이다.
2. Docker 네트워크 생성 및 연결
$ docker network ls
위의 명령어를 입력하면 현재 도커가 생성한 network 현황을 알 수 있다.
만약 DB 컨테이너가 기본적으로 생성한 네트워크가 없다면 다음 명령어를 통해서 네트워크를 생성할 수 있다.
$ docker network create springboot-mysql-net
위와 같이 네트워크를 생성하였다면 이제 DB와 Springboot 컨테이너를 생성할 때 해당 네트워크로 연결하면 된다.
# DB
$ docker run --name db-mysql -p 3306:3006 --network springboot-mysql-net -e MYSQL_ROOT_PASSWORD=root MYSQL_DATEBASE=mydb -e MYSQL_USER=user -e MYSQL_PASSWORD=password -d mysql:5.7
# SpringBoot
$ docker run -p 8080:8080 --name springboot --network springboot-mysql-net -d springboot-mysql:1.0
--network라는 명령어를 통해서 같은 네트워크를 보게 할 수 있었고 해당 설정을 하면 커넥션을 공유할 수 있게 된다.
위의 사항은 다음 페이지를 참고하였으니 자세한 사항은 아래 페이지에서 참고하면 될 듯 하다.
추가적으로 springboot 컨테이너 생성은 공식 페이지에서 확인할 수 있었다.
https://spring.io/guides/gs/spring-boot-docker/
반응형
그리드형
'개발자의 시선 > 개발자' 카테고리의 다른 글
[DB] NoSQL과 RDBMS 차이점 (0) | 2023.03.31 |
---|---|
[JAVA] exception just for purpose of providing stack trace 발생 원인 (0) | 2023.03.31 |
[POSTGRE SQL] caused by: org.postgresql.util.psqlexception: fatal: password authentication failed for user 발생 원인 (0) | 2023.03.31 |
[JAVA] Java와 Kotiln의 차이점 (0) | 2023.03.31 |
[Toast UI Grid] Model에서 조회시 데이터 안보이는 경우 (0) | 2022.11.09 |
[웹] AES, Base64 암복호화 테스트 페이지 공유 (2) | 2021.12.05 |
[이클립스] 제공받은 WSDL로 소스 임포트하기 (0) | 2020.12.12 |
[fanatical] 프로그래밍(C++,JAVA,PYTHON) 번들 무료 배포 (영어) (0) | 2020.09.16 |