# 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가 된다.
# 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
@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에 연동 시켜 개발환경을 정상적으로 구축했다.