
웹 프로젝트를 진행할 때, 로컬에서도 DB를 쉽게 띄우고 연결해서 테스트할 수 있는 환경이 필요하게 되는데, 이럴 때 docker를 실행해서 mysql서버를 실행하거나, 명령어를 통해서 실행할 수 있지만, Docker Compose를 사용하면 간편하게 MySQL 서버를 띄우고 관리할 수 있고, 여러개의 서버를 한번에 띄울 수 있게 된다.
Docker Compose는 여러 컨테이너를 하나의 설정 파일(docker-compose.yml)로 정의하고, "docker-compose up" 명령어 한 줄로 전체 시스템을 시작할 수 있게 도와주는 도구이다.
- docker-compose.yml 파일 추가 및 코드 추가
- application.yml파일에서 연결을 설정
- 명령어 실행
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: always | Docker가 재시작되더라도 자동으로 MySQL 컨테이너 실행됨 |
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
터미널에서 아래 명령어 입력:
docker-compose up -d
=> 이와 같은 사진이 나오면 성공적으로 docker-compose가 실행된 것이다.
이제 MySQL이 localhost:3306에 실행되고, chat_db라는 데이터베이스가 생성된 상태이다.
=> 필요 없다. Docker Compose로 MySQL 컨테이너를 띄우면 별도로 MySQL 설치할 필요가 없다. 모든 설정은 docker-compose.yml에 있고, 필요 시 쉽게 재설정하거나 삭제 가능
Spring Boot와 MySQL을 함께 사용할 경우, 번거로운 docker 설치나 docker desktop에 들어가서 mysql container를 실행하지 않아도 테스트를 진행할 수 있어서 정말 편한 것 같다.