[Docker] Network 실제로 사용해보기! (MySQL + Spring Boot + React)

·2024년 2월 2일

Start Docker!

목록 보기
7/9

구성

  • DB: MySQL
  • BackEnd: Spring Boot
  • FrontEnd: React

React

  • React의 코드는 html에서 실행하기 때문에 다음과 같이 사용
const response = await fetch('http://localhost:8080/');

Host와 통신

  • MySQL은 컨테이너로 백엔드는 Host에서 구동!
  • 방식1: MySQL을 실행시 -p를 이용해서 사용
  • 방식2: Container의 IP를 활용해서 접근

방식1: MySQL을 실행시 -p를 이용

MySQL

  • 따로 Dokerfile을 구성하지 않고 Image를 불러와서 사용
docker run --name mysqldb \
--rm -p 3306:3306 -d \
-e MYSQL_ROOT_PASSWORD=1234 \
-e MYSQL_DATABASE=test1 \
mysql

Spring Boot

spring.datasource.url=jdbc:mysql://localhost:3306/test1

다음과 같이 localhost로 접근

방식2: Container의 IP를 활용

MySQL

docker run --name mysqldb \
--rm -d \
-e MYSQL_ROOT_PASSWORD=1234 \
-e MYSQL_DATABASE=test1 \
mysql
docker container inspect mysqldb

해당 명령어를 통해 IP를 찾을 수 있다.

Spring Boot

spring.datasource.url=jdbc:mysql://172.17.0.2:3306/test1

다음과 같이 IP주소를 이용해서 접근

Container 사이의 Network

  • 도커 네트워크를 구성
  • 컨테이너를 같은 네트워크에 넣어서 사용

network 만들기

docker network create [name]

MySQL

docker run --name mysqldb \
--rm -d \
--network [name] \
-e MYSQL_ROOT_PASSWORD=1234 \
-e MYSQL_DATABASE=test1 \
mysql
  • 같은 네트워크에 위치하기 때문에 -p 옵션은 필요없다.

Spring Boot

spring.datasource.url=jdbc:mysql://mysqldb:3306/test1
docker run --name backend \
--rm -d -p 8080:8080 \
--network [name] \
backend
  • react와 통신을 위해 -p가 필요하다.
  • DB 서버가 켜진 상태에서 실행해야한다!

0개의 댓글