[Spring Boot] docker-compose 사용해보기

Yong·2025년 7월 17일
post-thumbnail

웹 프로젝트를 진행할 때, 로컬에서도 DB를 쉽게 띄우고 연결해서 테스트할 수 있는 환경이 필요하게 되는데, 이럴 때 docker를 실행해서 mysql서버를 실행하거나, 명령어를 통해서 실행할 수 있지만, Docker Compose를 사용하면 간편하게 MySQL 서버를 띄우고 관리할 수 있고, 여러개의 서버를 한번에 띄울 수 있게 된다.

🐳 Docker Compose란??

Docker Compose는 여러 컨테이너를 하나의 설정 파일(docker-compose.yml)로 정의하고, "docker-compose up" 명령어 한 줄로 전체 시스템을 시작할 수 있게 도와주는 도구이다.

✔️Docker Compose 특징

  • 여러 서비스(DB, Redis, 백엔드 등)를 한 번에 실행
  • 포트, 볼륨, 환경 변수 등을 YAML로 선언
  • 로컬 개발 및 테스트 환경 구축에 유용
  • 별도 MySQL 설치 없이 즉시 개발 가능

적용 순서 :

  1. docker-compose.yml 파일 추가 및 코드 추가
  2. application.yml파일에서 연결을 설정
  3. 명령어 실행

1. 🛠️ docker-compose.yml (mysql 사용시)

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql-chat
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: chat_db
      MYSQL_USER: chatuser
      MYSQL_PASSWORD: chatpass
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
    restart: always
volumes:
  mysql_data:
항목설명
image사용할 MySQL 버전 지정 (8.0)
environment환경변수로 DB 이름, 사용자, 비밀번호 등을 설정
ports호스트 ↔ 컨테이너 간 포트 연결 (3306으로 지정)
volumes컨테이너 종료 후에도 데이터가 유지되도록 볼륨 마운트
restart: alwaysDocker가 재시작되더라도 자동으로 MySQL 컨테이너 실행됨

2. 🌱 Spring Boot 연결 설정 (application.yml)

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/chat_db
    username: chatuser
    password: chatpass
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: none
    show-sql: true
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL8Dialect

3. ▶️ 실행 방법

터미널에서 아래 명령어 입력:

docker-compose up -d

=> 이와 같은 사진이 나오면 성공적으로 docker-compose가 실행된 것이다.

이제 MySQL이 localhost:3306에 실행되고, chat_db라는 데이터베이스가 생성된 상태이다.

❓그러면 Docker Desktop으로 따로 MySQL 설치할 필요 없는건가?

=> 필요 없다. Docker Compose로 MySQL 컨테이너를 띄우면 별도로 MySQL 설치할 필요가 없다. 모든 설정은 docker-compose.yml에 있고, 필요 시 쉽게 재설정하거나 삭제 가능


Spring Boot와 MySQL을 함께 사용할 경우, 번거로운 docker 설치나 docker desktop에 들어가서 mysql container를 실행하지 않아도 테스트를 진행할 수 있어서 정말 편한 것 같다.

profile
Coram Deo

0개의 댓글