MAIN/My Study

Docker Compose์—์„œ MySQL ๋ฐ์ดํ„ฐ ์˜์†์„ฑ ์„ค์ •ํ•˜๊ธฐ

ํƒํŠธ 2025. 5. 23. 05:23

๐Ÿณ ๋„์ปค ์ปดํฌ์ฆˆ

์ตœ์‹  ๋ฒ„์ „์—์„œ๋Š” Docker Desktop์ด ๊ธฐ๋ณธ์ ์œผ๋กœ Docker Compose v2๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์„œ ๋ณ„๋„๋กœ ์„ค์น˜ํ•  ํ•„์š” ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณผ๊ฑฐ์—๋Š” ๋„์ปค ์ปดํฌ์ฆˆ๊ฐ€ ๋ณ„๋„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ทจ๊ธ‰๋˜์–ด ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์ด ์š”๊ตฌ๋˜์—ˆ์œผ๋ฉฐ, dokcer-compose ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.
# ์„ค์น˜ ํ™•์ธ
docker compose version

# ์ถœ๋ ฅ ์˜ˆ์‹œ
Docker Compose version v2.34.0-desktop.1
docker-compose.yml          # ๊ธฐ๋ณธ ๊ณตํ†ต ๊ตฌ์„ฑ
docker-compose.override.yml # ๋กœ์ปฌ ์ „์šฉ ์„ค์ • (์ž๋™ ์ธ์‹)
docker-compose.prod.yml     # ์šด์˜ ํ™˜๊ฒฝ ์ „์šฉ
.env                        # ํ™˜๊ฒฝ๋ณ€์ˆ˜

๋ฐ์ดํ„ฐ ์˜์†์„ฑ ์„ค์ •ํ•˜๊ธฐ

๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด MySQL์„ ๋„์ปค๋กœ ๋„์šฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ป๋‹ค ์ผœ๋‹ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ์•„๊ฐ„ ๊ฒฝํ—˜์ด ํ•œ ๋ฒˆ์ฏค ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์˜์†์„ฑ์„ ์„ค์ •ํ•˜์ž.

๋”๋ณด๊ธฐ

๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ์ผํšŒ์„ฑ์ด๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ซ์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ๋Š” ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋•Œ ๋ณผ๋ฅจ์„ ์ง€์ •ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด MySQL ๋ฐ์ดํ„ฐ๋„ ์ „๋ถ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ MySQL ๋ฐ์ดํ„ฐ๋ฅผ ๋”ฐ๋กœ ๋””์Šคํฌ์— ์ €์žฅํ•˜๋„๋ก ์„ค์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ์„ '์˜์†์„ฑ ์„ค์ •'์ด๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ฒ ๋‹ค.
version: '3.8' # ๋ฒ„์ „ ์ƒ๋žต ๊ถŒ์žฅ

services:
  <์„œ๋น„์Šค ์ด๋ฆ„(๋ณดํ†ต db)>:
    image: mysql:latest
    container_name: <์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„>
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: <๋ฃจํŠธ ๋น„๋ฐ€๋ฒˆํ˜ธ>
      MYSQL_DATABASE: <๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„>
      MYSQL_USER: <์‚ฌ์šฉ์ž ์ด๋ฆ„>
      MYSQL_PASSWORD: <์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ>
    ports:
      - "3306:3306"
์œ„ ์˜ˆ์‹œ์—์„œ๋Š” MySQL์„ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์„ค์ •ํ•˜์˜€์œผ๋‚˜, ๋‹จ์ˆœ ํ•™์Šต ๋ชฉ์ ์ด ์•„๋‹Œ ์‹ค์ œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ์žฌํ˜„์„ฑ ๋ณด์žฅ์„ ์œ„ํ•ด ํŠน์ • ๋ฒ„์ „์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. (๋ณด์•ˆ ์—…๋ฐ์ดํŠธ๋‚˜ ๋งˆ์ด๋„ˆ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ ๋‚˜์˜ค๋ฉด ์ง์ ‘ ์˜ฌ๋ ค์„œ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ฐ˜์˜ํ•˜๋Š” ๋ฐฉ์‹)
์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์—๋Š” ํ•˜์ดํ”ˆ์„ ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ ์™ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„ ๊ฐ™์€ ๊ฒƒ์—๋Š” ์–ธ๋”์Šค์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์‚ฌ์‹ค ์–ธ๋”์Šค์ฝ”์–ด๋กœ ์ „๋ถ€ ํ†ต์ผํ•ด๋„ ๋˜์ง€๋งŒ, ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ๊ฐ™์€ ๊ฑด ์…ธ์—์„œ ์ง์ ‘ ํƒ€์ดํ•‘ํ•  ์ผ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜์ดํ”ˆ์ด ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
(Ex. docker run --name hospital-db)

 

๋ณผ๋ฅจ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๋‹ค. ๋„์ปค ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๋งคํ•‘์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

1. ๋„์ปค ๋ณผ๋ฅจ ์‚ฌ์šฉ (๊ถŒ์žฅ)

services:
  db:
    image: mysql:latest
    ...
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data: # ๋„์ปค ๋ณผ๋ฅจ ์„ ์–ธ
db_data๋ผ๋Š” ๋„์ปค ๋ณผ๋ฅจ์ด ์ƒ์„ฑ๋˜๊ณ , ๊ทธ ์•ˆ์— MySQL์˜ ๋ชจ๋“  DB ํŒŒ์ผ์ด ์ €์žฅ๋œ๋‹ค. ๋„์ปค๊ฐ€ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์„ค์ •์ด ๊ฐ„ํŽธํ•˜๋‹ค. ๋‹จ, ๋กœ์ปฌ์—์„œ ์ง์ ‘ ๋ณด๊ธฐ์—” ์กฐ๊ธˆ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๋งคํ•‘ (ํŽธํ•œ ๋กœ์ปฌ ํ™•์ธ/๋””๋ฒ„๊น…)

services:
  db:
    image: mysql:latest
    ...
    volumes:
      - ./mysql-data:/var/lib/mysql
ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ํด๋”์— mysql-data ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ๊ธฐ๊ณ , ๊ทธ ์•ˆ์— ์‹ค์ œ DB ํŒŒ์ผ๋“ค์ด ์ €์žฅ๋œ๋‹ค. ์ง์ ‘ DB ํŒŒ์ผ์„ ๋ณด๊ธฐ ์ˆ˜์›”ํ•˜์ง€๋งŒ, ํŠนํžˆ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ๋””๋ ‰ํ† ๋ฆฌ ๊ถŒํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. (chmod, chown ๊ฐ™์€ ๊ถŒํ•œ ์ด์Šˆ)

 

/var/lib/mysql์€ ์‹ค์ œ๋กœ MySQL์ด DB ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ๊ฒฝ๋กœ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ฒฝ๋กœ๋ฅผ ๋งˆ์šดํŠธํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์˜์†์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ฒฐ๊ตญ ์‹ค์ œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ, ํ˜‘์—… ์ƒํ™ฉ์—์„œ๋Š” ์•ˆ์ •์„ฑ ๋ฐ ์ด์‹์„ฑ์„ ์œ„ํ•ด ๋„์ปค ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๊ณ , ํ•™์Šต ๋ชฉ์ ์œผ๋กœ ๋ณด๊ธฐ ํŽธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๋งคํ•‘๋„ ๋‚˜์˜์ง€ ์•Š์€ ์„ ํƒ์ผ ์ˆ˜ ์žˆ๋‹ค.


๊ธฐํƒ€ ํŒ

# ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ์ง€์ • (๊ฐ€๋…์„ฑ)
container_name: mysql-container

# ์ดˆ๊ธฐ SQL ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
volumes:
  - ./init.sql:/docker-entrypoint-initdb.d/init.sql
.init.sql์— ์›ํ•˜๋Š” ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์ฟผ๋ฆฌ๋ฅผ ๋„ฃ์–ด๋‘๋ฉด, ์ตœ์ดˆ ์‹คํ–‰ ์‹œ ์ž๋™ ์ ์šฉ๋œ๋‹ค.
# ์‹คํ–‰ ๋ช…๋ น์–ด
docker compose up -d
docker-compose๋Š” ๊ณผ๊ฑฐ ๋ฐฉ์‹์ด๋‹ˆ ์ตœ์‹  ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ž.