๐ณ ๋์ปค ์ปดํฌ์ฆ
์ต์ ๋ฒ์ ์์๋ 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๋ ๊ณผ๊ฑฐ ๋ฐฉ์์ด๋ ์ต์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์.
'MAIN > My Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
.prettierrc (0) | 2025.06.04 |
---|---|
Database driver: undefined/unknown (0) | 2025.05.24 |
๋์ปค ์ค์นํ๊ธฐ (MySQL ํฌํจ) (0) | 2025.05.15 |
์ ํด ์ํ ์ฝ๋ฐฑ ๋ฉ์๋์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ก ์ต์ ํ ํ ์ ์์๊น? (0) | 2025.05.05 |
์ธ์ด๋ธ ์ทจ์/ํ์ดํ ์ถ์ฝ/์์ฌ ์ฉ๋ ์ฒดํฌ/๊ธฐ์ต ์์กด์จ ์๊ฐํ (0) | 2025.04.24 |