Spring boot + docker + mysql 연동(1차 시도)

YeJin Lee·2024년 10월 12일

Spring Boot

목록 보기
10/11

1. annotation을 사용해야 했기 때문에 LOMBOK을 설치

1-1. Lombok 라이브러리 추가

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

	// Lombok 라이브러리
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
}

1-2. Lombok Plugin 설치

1-3. Annotation Processors Enable로 변경


2. @Entity 띄우기 위해서 JPA 라이브러리 추가

	// JPA 라이브러리
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

3. Mysql 연동

3-1. Mysql 라이브러리 추가

// Mysql 라이브러리
runtimeOnly 'com.mysql:mysql-connector-java'

3-2.application.yml작성

3-3. spring boot project pakaging

> .\gradlew clean build -x test

Error

해결

runtimeOnly 'mysql:mysql-connector-java:8.0.33'

버전을 명시해 주지 않아서 그렇단다.

4. 도커 네트워크 생성

> docker network create springboot-mysql-net

5. 도커 환경에서 Mysql구동

5-1. Docker Hub에서 이미지 가져오기

 > docker pull mysql:5.7 

Mysql 이미지는 공식적으로 Docker Hub에서 제공한다고 함

5-2. Mysql 구동하기

mysql 구동
--name: 컨테이너명 설정
-p: 포트매핑
--network: 네트워크 설정
-e: 환경변수 설정
-d: 백그라운드로 컨테이너 실행

 > docker run --name new-db-mysql -p 3306:3306 --network springboot-mysql-net -e MYSQL_USER=user -e MYSQL_PASSWORD=user -d mysql:5.7

Error
docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0
.0:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

> netstat -ano | findstr 3306
> tasklist | findstr 7136

mysqld.exe 7136 Services 0 1,668 K

로컬에 설치된 mysql이 이미 3306포트를 점유 중인 상황에서 컨테이너에 호스트 포트 3306을 할당시킨 문제라고 함

> taskkill /pid 7136 /f

오류: 프로세스(PID 7136)를 종료할 수 없습니다.
원인: 액세스가 거부되었습니다.

가 나길래 명령 프롬포트를 관리자 권한으로 실행해서 종료함

5-3.Dockerfile을 이용한 이미지 빌드

> docker build -t springboot-mysql:1.0

흠...

분명 두 개의 컨테이너가 백그라운드에서 잘 돌아가는데

안뜬다... 흠...

일단 데이터베이스 테이블은 만들어졌다.

도움을 받은 블로그
IntelliJ에 Lombok 설치
정말 감사합니다 -> Docker 설정 따라가기 좋습니다!

음...
mysql은 컨테이너가 연동이 잘되는데
spring boot 컨테이너가 자꾸 exit되서...
폭파!!

profile
안녕하세요, 영문과코딩 입니다.

0개의 댓글