Spring Boot에 Mysql Docker 연결

geunyeongii·2023년 4월 1일
0
post-thumbnail
# 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 연동

https://start.spring.io

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

profile
✏️세상의 모든 기록 ✏️

0개의 댓글