CICD

[Docker] Docker+Intellij로 MySQL 서버 띄워보자

limitation01 2025. 11. 24. 08:22

Docker란?

어디서 실행해도 똑같이 돌아가는 환경을 가상 컨테이너로 만들어주는 기술

쉽게말해

내컴퓨터에서는 되는데??의 문제를 해결해주는 기술

프로젝트 문서에 기술 버전까지 적으라는 이유를 이 문제로 설명할 수 있습니다.

개발자들은 A컴퓨터에선 잘 돌아가는데 B컴퓨터에서는 오류가 나는 경우를 심심치않게 만날 수 있다. 프로젝트는 협업의 과정이기 때문에 나만 잘 돌아간다고 끝낼 수 없습니다.

왜 이런문제가 발생할까?

컴퓨터마다 설치된 프로그램 버전이 다르고 환경이 제각각이기 때문

맥과 윈도우 동일하게 터미널에서 본인의 mysql 버전을 확인해보시면 이해가 편하실겁니다

mysql --version

아래는 제 mysql 버전입니다.

mysql  Ver 8.0.44 for macos14.7 on x86_64 (Homebrew)

동일하신가요?

이 버전을 5명이서 통일하려면 Docker를 쓰지않을땐 각자 mysql 버전을 지우고 (맥의 경우 백그라운드 포트점유에러때문) 다시 버전을 맞춰 깔아야합니다.

버전만 맞추면 100프로 에러가 없어지나?

  • 설정 동일 ( charset, collation, root ,,,)
  • 포트 동일

환경설정도 맞춰주어야 합니다.

기술 설명

컨테이너

Docker는 프로그램이 실행되는 환경전체를 컨테이너로 감싼다. ( = 박스같은 개념이라고 생각)

이 컨테이너 안에는

  • 프로그램 실행에 필요한 파일
  • 라이브러리
  • OS(리눅스 계열)
  • 버전 정보

다음과 같은 개발 환경 세팅에 필요한 모든 정보가 들어가있기 때문에

이 컨테이너를 각각의 팀원들이 옮겨 받으면 똑같이 실행이 된다.

이미지

우리는 프로그램을 실행하기 위해서는 “설치” 라는 과정을 거쳐야 합니다.

하지만 Docker에서는 설치 과정 대신

이미지 한 장만 가져오면 실행

요약하자면

  • 이미지(image) = 프로그램 + 실행환경 통 패키지
  • 컨테이너(container) = 그 이미지를 실제로 실행한 상태

그래서 왜 좋은걸까

  • 환경차이로 인한 오류 없어짐
    • 레시피가 있으면 모든 사람들이 따라 할 수 있다고 생각하면 이해하기 쉽다
  • 설치가 필요 없음
    • 이미지 하나만 가져오면 몇초만에 서버 실행
  • 개발-테스트-배포가 동일한 환경
    • 개발pc, 테스트 서버, 운영서버 환경이 100프로 일치하기 때문에 버그 줄어듬

Intellij에서 MySQL 환경 세팅하기

1. Docker 플러그인 설치

2. docker-compose.yml 생성

services:
  mysql:
    image: mysql:8.4
    container_name: 컨테이너명
    environment:
      MYSQL_ROOT_PASSWORD: 루트계정 패스워드
      MYSQL_DATABASE: 사용할 데이터베이스명
      TZ: Asia/Seoul
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci
    ports:
      - "3306:3306"
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:

한 줄씩 이해하기

  • services: 만들 서버 목록
  • mysql: 서버 이름
  • image: mysql:8.4 → MySQL 8.4 버전 실행
  • environment → DB 설정값 (root 비번, DB명, timezone)
  • command → 각국의 언어가 들어와도 DB에 깨지지 않게 저장하는 MySQL 인코딩 설정
  • ports: 3306:3306 → 내 컴퓨터 3306 ↔ 컨테이너 3306 연결
  • volumes → 컨테이너 종료해도 DB 데이터 유지

docker-compose.yml을 공유한다 = 팀 전체가 같은 DB 환경을 공유한다

3. 이미지 실행

yml 파일 작성후 다음 사진과 같은 버튼에 커서를 올리면 docker-compose up이라는 문구가 뜹니다. 해당 버튼 실행시 도커가 이미지를 다운로드 해 컨테이너를 생성해줍니다.

실행 흐름을 조금더 살펴보면

docker-compose.yml
      ↓
   MySQL 이미지 다운로드
      ↓
 컨테이너 생성 (mysql 서버)
      ↓
 MySQL 서버 실행 (3306 포트 오픈)

이 4단계로 Docker DB 환경 세팅이 끝나게 됩니다.

4) IntelliJ에서 Docker MySQL 접속하기

Database Tool 설정

  • Host: 127.0.0.1
  • Port: 3306
  • User: root
  • DB: 데이터 베이스 명
  • Driver: MySQL 자동 설치됨

5) Spring Boot에서 MySQL 연동하기 (필수)

Docker는 DB를 실행하는 것까지 해주고 Spring Boot는 DB에 연결해야 합니다.

💡 application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/newsfeed?serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=root1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true