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 + MySQL + Docker] 도커를 이용한 멀티 컨테이너 환경 구성
Springboot + MySQL + Docker
velog.io
추가적으로 springboot 컨테이너 생성은 공식 페이지에서 확인할 수 있었다.
https://spring.io/guides/gs/spring-boot-docker/
Spring Boot with Docker
this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team
spring.io
'개발자의 시선 > 개발자' 카테고리의 다른 글
[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 |
[이클립스] 제공받은 WSDL로 소스 임포트하기 (0) | 2020.12.12 |
[fanatical] 프로그래밍(C++,JAVA,PYTHON) 번들 무료 배포 (영어) (0) | 2020.09.16 |
온라인 IDE 리플릿 소개 (repl.it) (0) | 2020.08.23 |