기록

Docker/spring boot에 MySQL 데이터베이스 연결하기 본문

DevOps

Docker/spring boot에 MySQL 데이터베이스 연결하기

youngyin 2023. 9. 5. 18:00

시작하면서

spring boot를 사용하는 프로젝트에서, 로컬 데이터 데이스로 mysql을 사용하기로 했다.
도커를 사용하지 않고 직접 MySQL 서버를 설치하고 구성하는 것도 가능하지만, 이렇게 하면 개발자 간의 개발 환경 차이가 발생할 수 있으며, 버전 관리와 이식성 면에서 도커를 사용하는 것이 더 효율적일 수 있다. 따라서 아래에서는 docker을 이용해 spring boot에 MySQL 데이터베이스를 연결하고자 한다.

개요

  1. spring boot 프로젝트 설정
  • application.yml
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/doctor?serverTimezone=Asia/Seoul&useUnicode=true
    username: root
    password: Password
  1. setting container
  2. docker container 생성
  3. container 실행
  4. Spring Boot 애플리케이션 실행

docker를 사용해서 spring boot에 MySQL 데이터베이스 연결하기

setting container

docker pull mysql
  • create docker container
docker create --name mysqldb -e MYSQL_ROOT_PASSWORD=Password -e MYSQL_DATABASE=sample -p 3306:3306 mysql:latest
  • --name mysqldb: 컨테이너의 이름은 "mysqldb"로 설정한다.
  • -e MYSQL_ROOT_PASSWORD=Password: MySQL 루트 사용자의 비밀번호를 "Password"는 설정한다.
  • -e MYSQL_DATABASE=sample: MySQL 데이터베이스 이름을 "sample"로 설정합니다. 
  • -d: 컨테이너를 백그라운드 모드로 실행한다.
  • -p 3306:3306: 3306 포트를 사용한다.
  • mysql:latest: 사용할 Docker 이미지를 "mysql:latest"로 설정한다.

start container

mysqldb 컨테이너를 실행한다.

docker start mysqldb

end container

mysqldb 컨테이너를 중지한다.

docker stop mysqldb

monitor container

Docker에서 실행 중인 컨테이너의 목록을 표시한다. -a옵션은 실행 중인 컨테이너 뿐만 아니라 중지된 컨테이너도 모두 표시 하라는 옵션으로, docker ps를 사용하면 실행중인 컨테이너의 목록을 확인할 수 있다.

docker ps -a

delete container

생성된 컨테이너를 삭제할 때는 다음과 같은 명령어를 사용할 수 있다.

docker stop mysqldb
docker rm mysqldb

더 공부할 것

  • docker compose

docker를 사용해 데이터베이스와 연결해야 하는 경우 프로젝트를 실행하기 전에 컨테이너를 실행해야 하고, 프로젝트 종료 후에 컨테이너를 중지하거나 삭제하는 등의 작업이 필요하다. 이러한 실행절차를 하나의 서비스로 정의하고 관리하고 싶었다.
docker-compose 파일을 아래처럼 작성하면 프로젝트에 필요한 서비스, 컨테이너, 환경 변수 및 네트워크 설정을 정의할 수 있다. 

version: '3'
services:
  mysql:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: Password
      MYSQL_DATABASE: sample

  spring-boot-app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    depends_on:
      - mysql
  • 서비스 실행 및 관리

프로젝트 디렉토리에서 다음 명령어를 실행하여 Docker Compose를 사용하여 서비스를 실행할 수 있다.

docker-compose up
Comments