Spring Boot에 Mysql Docker 연결개발2024. 5. 14. 16:55
Table of Contents
# docker run mysql
# docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:latest
# docker exec -it [mysql-container] /bin/bash
bash-4.4# mysql -uroot -p
mysql> create database [db_name]
mysql> create user [user_name]@172.17.0.1 identified by [user_password]
mysql> grant all privileges on [db_name].* to [user_name]@172.17.0.1;
여기서 [user_name]@localhost
로 한다면 도커환경 내에서의 계정으로 잡히기 때문에 Access denied for 'user’@’172.17.0.1'(using password: YES) 에러가 뜰 것이다.
docker network inspect bridge 를 사용하여 네트워크 정보 확인가능함.
서브넷이 172.17.0.0/16으로 설정되어, 컨테이너 생성시 자동으로 해당 대역 부여된다.
그렇기 때문에 이 대역의 게이트웨이인 172.17.0.1 이 이 docker0의 IP가 된다.
Spring Boot 연동
java.resources.application.yml
# database 연동 설정
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
# 각자 PC에 만들어놓은 Database이름을 써야 한다.
url: jdbc:mysql://localhost:3306/[dataabse_name]?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
# mysql에 생성한 사용자 계정 정보를 써야 한다.
username: user_ID
password: user_PW
thymeleaf:
cache: false
이러고 실행하면 "Could not resolve mysql:mysql-connector-java:"
에러가 떴다.
build.gradle에 아래의 의존성 추가.implementation 'mysql:mysql-connector-java:8.0.32'
Entity 설정
member.entity
@Entity
@Setter
@Getter
@Table(name = "member_table")
public class MemberEntity {
@Id // Specifies Pk
@GeneratedValue(strategy = GenerationType.IDENTITY) // Auto-increment
private Long id;
@Column(unique = true)
private String memberEmail;
@Column
private String memberPassword;
@Column
private String memberName;
}
도커환경에서 mysql을 띄우고 Local의 Spring Boot에 연동 시켜 개발환경을 정상적으로 구축했다.
'개발' 카테고리의 다른 글
Selenium (0) | 2024.05.13 |
---|---|
BeautifulSoup (0) | 2024.05.13 |
Fork된 Repository 업데이트 하기 (0) | 2024.05.13 |
[Flask] SQLAlchemy ORM 활용법 (0) | 2024.05.13 |
Gtithub SHH Key 설정 (0) | 2024.05.13 |
@widesec :: 보안 기술로그
IT/보안