DevOps
Docker MySQL + Spring boot 연동
감자b
2024. 12. 30. 00:17
- MySQL 이미지를 설치
docker pull mysql
- 설치가 잘 되었는지 확인
docker images
- 다운받은 이미지로 MySQL 컨테이너 실행
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:latest
- docker run: Docker에서 새로운 컨테이너를 생성하고 실행하는 명령어
- --name mysql-container: 생성할 컨테이너의 이름을 mysql-container로 지정
- -e MYSQL_ROOT_PASSWORD=: 환경 변수를 설정.
- 여기서 MYSQL_ROOT_PASSWORD는 MySQL의 루트 사용자 비밀번호를 설정
- -d: 컨테이너를 백그라운드에서 실행하도록 지정. 즉, 터미널을 차지하지 않고 실행
- -p 3306:3306: 호스트의 3306 포트를 컨테이너의 3306 포트에 매핑
- mysql:latest: 컨테이너에 사용할 Docker. 이미지 여기서는 MySQL의 최신 버전을 사용하겠다는 의미
- 생성된 컨테이너 확인
docker ps -a
- MySQL 컨테이너 접속 (CONTAINER ID는 4번 명령어를 통해 확인 가능)
docker exec -it <CONTAINER ID> mysql -u root -p
- Database 생성
create database <DBName>
Spring boot 설정
의존성
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ${local.mysql.url}
username: ${local.mysql.username}
password: ${local.mysql.password}
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
open-in-view: false
환경 변수로 url, username, password를 주입받는다.
url : jdbc:mysql://localhost:3306/?serverTimezone=UTC
username : root
password : 위에서 지정한 패스워드
설정 중 발생한 에러
Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']
Database driver: undefined/unknown
Database version: 8.0.40
Autocommit mode: undefined/unknown
Isolation level: undefined/unknown
...
3.4.x 버전을 사용하니 해당 에러가 발생하였다.
버전을 3.3.7로 낮추고 나니 해결되었다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.7'
id 'io.spring.dependency-management' version '1.1.7'
}