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