본문 바로가기

기록하기

Springboot + Mysql + Docker 연동하기 1

1. Doker에서 Springboot, Mysql 연동하기

  • Doker에서 Springboot,Mysql을 연동하여 배포하면 각각의 컨테이너가 필요
  • 여기서는 브릿지 네트워크(bridge network)를 생성하여 사용하는 방법
  • Doker의 기본 네트워크 모드가 브릿지 네크워크
  • Doker 네트워크 생성 -> springboot 이미지, mysql 이미지를 해당 네트워크를 통해 실행하여 컨테이너를 생성

2. Docker network 생성

// 터미널에서 
docker network create <네트워크이름>

// 예시) 'docker-network' 입력

 

// 생성 후 확인용 -> 네트워크 목록 확인
docker network ls

 

  • 네트워크 생성 -> Mysql, Springboot 컨테이너를 해당 네트워크 묶어주면 됨
  • 그전에 mysql 이미지와 springboot 이미지 생성

3.Mysql Docker image 다운로드

// 터미널
docker pull mysql:8.0

// 터미널 입력 -> 다운받은거 확인
docker images


4. Mysql docker 컨테이너 생성

// 터미널 명령어 입력
docker run -d --name mysql-container --network docker-network -e MYSQL_ROOT_PASSWORD=1111 mysql:8.0

 

  • 'mysql-container' : 본인이 설정
  • MYSQL_ROOT_PASSWORD : 본인이 설정
  • myslq:8.0 : 이거는 아까 다운로드받은 이미지
  • 'mysql-container' 라는 이름으로 network는 위에서 생성한 docker-network를 사용하며, mysql 비밀번호로는 1111로 설정한다 (이런의미)
// 명령어 -> 다운로드 진행상황 알 수 있음
docker ps

// 이후 실제 해당 컨테이너가 위에서 생성한 docker-network에 속하는지 확인하는 방법
docker network inspect docker-network

5. Mysql DB 생성

url: jdbc:mysql://localhost:3306/memo

 

  • 연습할때 DB 이름
  • 도커의 Mysql에는 해당 DB가 없어서 생성해야 함
// 터미널 명령어 입력
docker exec -it mysql-container mysql -u root -p 

#아래의 메시지가 나오면 아까 생성할 때 입력한 비밀번호 입력
Enter password:

# 비밀번호 입력 후 mysql> 글자가 보이며 접속이 된것이 확인됨
mysql> create database memo;

Query OK, 1 row affected (0.12 sec) 메시지가 나오면 성공

 

  • 'mysql-container' -> 본인이 위에서 설정한 이름으로 입력

6. application.yml 파일 수정

  • 위에서 만든 'mysql-container'와 연동하기 위해 yml 파일 해당 부분 수정
// 연습한 yml 파일 첨부

spring:
  datasource:
    url: jdbc:mysql://mysql-container:3306/memo // 여기부분 수정해야함
    username: {username}
    password: {password}
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        use_sql_comments: true

logging:
  level:
    org:
      springframework:
        security: DEBUG
        web: DEBUG

 

// 수정하기 전
url: jdbc:mysql://localhost:3306/memo

// 수정 후
url: jdbc:mysql://mysql-container:3306/memo

7. Dockerfile 생성

FROM amazoncorretto:17

WORKDIR /app

COPY build/libs/*.jar board-0.0.1-SNAPSHOT.jar

ENTRYPOINT ["java", "-jar", "board-0.0.1-SNAPSHOT.jar"]

 

  • root 파일에 생성
  • 연습한 dockerfile 첨부
  • 개인 환경에따라 jar 파일명이 다르고, 생성갯수도 다른걸로 암(이건 아직 정확하게 모름)

8. springboot 이미지 생성 후 실행

  • jar 파일생성
// 1. jar 파일생성

// 2. 명령어 입력 -> 본인이 설정
docker build -t board-image .

// 3. 위에 생성한 방법과 같은 방식으로 네트워크 옵션 주기
docker run -d --name board-container --network docker-network -p 8080:8080 board-image

// 4. springboot, mysql 컨테이너가 생성한 네트워크에 속하는지 확인
// docker-network -> 본인이 설정한 이름
docker network inspect docker-network


참고 https://tytydev.tistory.com/45

 

Docker spring boot mysql 연동 자세히 설명

HTML 삽입 미리보기할 수 없는 소스 1. Docker에서 spring boot, mysql 연동 방법 도커에서 spring boot와 mysql을 연동하여 배포하려면 spring boot 컨테이너와 mysql 컨테이너가 각각 필요하다. 이후 두 컨테이너

tytydev.tistory.com

 

'기록하기' 카테고리의 다른 글

배포 분투기(1)  (0) 2023.11.11
Docker compose + Springboot + Mysql 연동하기(2)  (0) 2023.11.11
Day + 26  (0) 2023.11.10
나를 위한 swagger 사용법2  (0) 2023.11.10
Day + 23  (0) 2023.11.07