Docker(도커)

Docker 를 이용한 SpringBoot DB연결

Jr.고래 2024. 7. 2. 18:09

Docker를 이용한 Spring Boot DB연결을 해보겠습니다

(spring data jpa 를 이용)

 

 

Docker가 뭔지 모르신다면 ? 

https://itwhale.tistory.com/48

 

Docker(도커)란? 설치부터~!

도커 --> 배 + 컨테이너  ----------------------ㅣ      JDK                    ㅣㅣ     python                ㅣㅣ     git                        ㅣ---------OS-----------------인프라(컴퓨터) ----- 

itwhale.tistory.com

 

간단하게 설치방법,명령어에 대해 적어놨습니다

설명이 자세하지는 않지만 한번 따라해보시면 도움이 되실거라고 생각합니다

 

 

 

먼저 Spring Boot를 설정하고 

Docker를 설정해보겠습니다

 

Spring Boot 설정 

 

build.gradle 의존성 추가하기.

( Reload gradle 꼭 하기 )

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.mysql:mysql-connector-j'
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'

 

 

resources/application.yml 파일 추가하기

resources/application.properties 파일 추가하기

 

 

application.yml 파일 내용

( db는 mysql을 사용했습니다 )

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: ${SPRING_DATASOURCE_URL}
    username: ${SPRING_DATASOURCE_USERNAME}
    password: ${SPRING_DATASOURCE_PASSWORD}
  jpa:
    database: mysql
    database-platform: org.hibernate.dialect.MySQLDialect
    show-sql: true
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        format_sql: true

 

application.properties 내용 

URL,USERNAME,PASSWORD는 Docker에서 따로 환경변수로 추가할것이기 때문에 따라해도 무방합니다

spring.application.name=doWee

SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/doWee?serverTimezone=Asia/Seoul
SPRING_DATASOURCE_USERNAME=doWee
SPRING_DATASOURCE_PASSWORD=pass

 

Couple.java 내용

( Entity로 객체가 매핑되어 DB에 해당하는 테이블을 생성해줍니다 )

@Entity
@Getter
@Setter
public class Couple {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Integer coupleId;

    @Column(unique = true)
    private String userName;

    private String password;

    @Column(unique = true)
    private String email;

}

 

스프링부트의 설정은 끝이났습니다

 

 

 

 

Docker 설정 

 

 ( sudo lsof -i :3306 을 통해 3306포트가 사용중인지 확인하고

사용중이라면 sudo kill -9 PID 를 통해 포트를 비워줍니다  )

 

터미널을 키고 Docker 설정

( SpringBoot application.properties의 내용과 일치해야합니다 )

docker run -d -p 3306:3306 
            -e MYSQL_ROOT_PASSWORD=rootpass 
            -e MYSQL_DATABASE=doWee 
            -e MYSQL_USER=doWee 
            -e MYSQL_PASSWORD=pass mysql

docker ps를 통해 컨테이너가 실행중인지 확인

 

그 후에 SpringBoot를 실행

정상적으로 실행됨을 확인 할 수 있다

 

 

 

 

과연 Docker에 설치된 mysql에 제대로 db table이 생성된게 맞을까?

 

눈으로 확인해 보자 ! 

 

docker ps를 통해 containerID를 확인하고 

docker exec -it containerID bash 를 입력한다.

Docker 우분투 컨테이너에 진입

 

 

 mysql -u doWee -p 명령어를 입력하면 password를 입력하라고 나오는데

Dockerd에 설정한 doWee의 비밀번호 pass를 입력해주면 된다.

 

show databases를 통해 doWee 스키마가 생성된걸 확인하고 

doWee 스키마를 기본 스키마로 사용

 

 

정상적으로 스키마와 테이블이 생성된것을 알 수 있다.

 

 

 

이제 SpringBoot와 연결된 Docker mySQL에 어떻게 Data를 넣을까 ?

 

https://itwhale.tistory.com/66

다음글에 계속 ! 

'Docker(도커)' 카테고리의 다른 글

Docker를 활용한 Linux 실습환경 구축  (0) 2024.07.04
리눅스(Linux) 기초1  (0) 2024.07.03
Docker를 통한 DB연결(데이터 저장)  (0) 2024.07.02
Docker(도커)란? 설치부터~!  (0) 2024.06.10