본문 바로가기

[Docker] 컨테이너간 Connection Refused 발생시 처리 방법

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라는 명령어를 통해서 같은 네트워크를 보게 할 수 있었고 해당 설정을 하면 커넥션을 공유할 수 있게 된다.

 

위의 사항은 다음 페이지를 참고하였으니 자세한 사항은 아래 페이지에서 참고하면 될 듯 하다.

https://velog.io/@dhk22/Springboot-MySQL-Docker-%EB%8F%84%EC%BB%A4%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1

 

[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

 

반응형
그리드형