<aside>

</aside>

μ•ˆλ…•ν•˜μ„Έμš”! λŒ€λ§μ˜ 8λΆ€ '배포 및 운영' 두 번째 μ‹œκ°„, 38κ°•μž…λ‹ˆλ‹€! πŸŽ‰

μ§€λ‚œ 37κ°•μ—μ„œλŠ” Dockerfile을 μž‘μ„±ν•˜κ³  docker build, docker run λͺ…령을 μ‚¬μš©ν•˜μ—¬ 우리 FastAPI μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ„±κ³΅μ μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆν™”ν–ˆμŠ΅λ‹ˆλ‹€! πŸ“¦πŸ³ 이제 우리 앱은 μ–΄λ””μ„œλ“  λ™μΌν•˜κ²Œ 싀행될 수 μžˆλŠ” λ©‹μ§„ νŒ¨ν‚€μ§€κ°€ λ˜μ—ˆμ£ !

ν•˜μ§€λ§Œ μ‹€μ œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μ•± μ„œλ²„ 혼자만 λ©κ·ΈλŸ¬λ‹ˆ μ‹€ν–‰λ˜λŠ” κ²½μš°λŠ” λ“œλ­…λ‹ˆλ‹€. 보톡 λ°μ΄ν„°λ² μ΄μŠ€(PostgreSQL λ“±), μΊμ‹œ μ„œλ²„(Redis λ“±), λ©”μ‹œμ§€ 큐(RabbitMQ λ“±) 같은 μ—¬λŸ¬ μ„œλΉ„μŠ€λ“€κ³Ό ν•¨κ»˜ λ™μž‘ν•΄μ•Ό ν•˜μ£ . 37κ°•μ—μ„œ λ§Œλ“  μ•± μ»¨ν…Œμ΄λ„ˆλŠ” μ—¬μ „νžˆ μ™ΈλΆ€ λ°μ΄ν„°λ² μ΄μŠ€μ— μ˜μ‘΄ν•˜κ±°λ‚˜, μ»¨ν…Œμ΄λ„ˆ 내뢀에 μž„μ‹œ SQLite νŒŒμΌμ„ μ‚¬μš©ν•˜κ³  μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ μžμ²΄λ„ μ»¨ν…Œμ΄λ„ˆλ‘œ ν•¨κ»˜ μ‹€ν–‰ν•˜κ³  관리할 μˆ˜λŠ” μ—†μ„κΉŒμš”? πŸ€”

이번 μ‹œκ°„μ—λŠ” λ°”λ‘œ 이 닀쀑 μ»¨ν…Œμ΄λ„ˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ†μ‰½κ²Œ μ •μ˜ν•˜κ³  μ‹€ν–‰, 관리할 수 있게 ν•΄μ£ΌλŠ” κ°•λ ₯ν•œ 도ꡬ, Docker Compose에 λŒ€ν•΄ λ°°μ›λ‹ˆλ‹€! docker-compose.ymlμ΄λΌλŠ” μ„€μ • 파일 ν•˜λ‚˜λ‘œ 우리 FastAPI μ•± μ»¨ν…Œμ΄λ„ˆμ™€ PostgreSQL λ°μ΄ν„°λ² μ΄μŠ€ μ»¨ν…Œμ΄λ„ˆλ₯Ό ν•¨κ»˜ λ„μš°κ³  μ—°κ²°ν•˜λŠ” 방법을 μ•Œμ•„λ³Ό κ±°μ˜ˆμš”.

λ”λΆˆμ–΄, λ°μ΄ν„°λ² μ΄μŠ€ 접속 μ •λ³΄λ‚˜ JWT λΉ„λ°€ ν‚€μ²˜λŸΌ λ―Όκ°ν•˜κ±°λ‚˜ ν™˜κ²½λ³„λ‘œ λ‹¬λΌμ§€λŠ” μ„€μ • 값듀을 μ½”λ“œμ— 직접 λ„£μ§€ μ•Šκ³  μ•ˆμ „ν•˜κ³  μœ μ—°ν•˜κ²Œ κ΄€λ¦¬ν•˜λŠ” 방법, 즉 ν™˜κ²½ λ³€μˆ˜μ™€ .env νŒŒμΌμ„ ν™œμš©ν•˜λŠ” λ°©λ²•κΉŒμ§€ ν•¨κ»˜ λ°°μš°κ² μŠ΅λ‹ˆλ‹€! 이제 개발 ν™˜κ²½κ³Ό 운영 ν™˜κ²½μ„ λ”μš± κΉ”λ”ν•˜κ²Œ λΆ„λ¦¬ν•˜κ³  관리해 λ΄…μ‹œλ‹€! βš™οΈπŸ”—πŸŒ³


πŸ“š 챕터 μ†Œκ°œ

37κ°•μ˜ 단일 μ»¨ν…Œμ΄λ„ˆλ₯Ό λ„˜μ–΄, 닀쀑 μ»¨ν…Œμ΄λ„ˆ(μ„œλΉ„μŠ€) μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 효율적 관리 도ꡬ인 Docker Compose μ†Œκ°œ 및 μ‚¬μš©λ²• ν•™μŠ΅. μ‹€μ œ μ›Ή 앱은 λ‹€μˆ˜ μ»΄ν¬λ„ŒνŠΈ(μ›Ή μ„œλ²„, DB, μΊμ‹œ λ“±)둜 ꡬ성. Docker ComposeλŠ” YAML μ„€μ • 파일 (docker-compose.yml) ν•˜λ‚˜λ‘œ 닀쀑 μ»¨ν…Œμ΄λ„ˆ ν™˜κ²½μ„ μ‰½κ²Œ μ •μ˜ 및 관리.

FastAPI μ•±κ³Ό PostgreSQL DB μ»¨ν…Œμ΄λ„ˆλ₯Ό ν•¨κ»˜ μ‹€ν–‰ν•˜λŠ” docker-compose.yml μž‘μ„± μ‹€μŠ΅. 각 μ„œλΉ„μŠ€(app, db) μ •μ˜ 및 build, image, ports, volumes, depends_on, λ„€νŠΈμ›Œν¬ μ„€μ • λ“± ꡬ성 방법 ν•™μŠ΅.

DB 접속 정보, API ν‚€ λ“± 민감/ν™˜κ²½λ³„ μ„€μ • κ°’μ˜ ν•˜λ“œμ½”λ”© μ§€μ–‘. **ν™˜κ²½ λ³€μˆ˜(Environment Variables)**λ₯Ό ν†΅ν•œ 관리 λͺ¨λ²” 사둀 ν•™μŠ΅. 개발 ν™˜κ²½μ—μ„œ .env 파일 μž‘μ„± 및 Docker Compose, FastAPI μ½”λ“œ(os.getenv)μ—μ„œμ˜ μ°Έμ‘° 방법 μŠ΅λ“. docker compose up/down λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•œ 전체 μ•± μŠ€νƒμ˜ μ‰¬μš΄ μ‹œμž‘/쀑지 방법 ν•™μŠ΅.


🎯 챕터 λͺ©ν‘œ

이 κ°•μ˜λ₯Ό 마치면 μ—¬λŸ¬λΆ„μ€ λ‹€μŒμ„ ν•  수 있게 λ©λ‹ˆλ‹€:

  1. μ—¬λŸ¬ μ„œλΉ„μŠ€(DB λ“±)둜 κ΅¬μ„±λœ 닀쀑 μ»¨ν…Œμ΄λ„ˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 관리 ν•„μš”μ„± 이해.
  2. Docker Compose μ—­ν• (닀쀑 μ»¨ν…Œμ΄λ„ˆ μ •μ˜ 및 μ‹€ν–‰) 및 docker-compose.yml κΈ°λ³Έ ꡬ쑰 νŒŒμ•….
  3. docker-compose.yml νŒŒμΌμ— μ—¬λŸ¬ μ„œλΉ„μŠ€(예: FastAPI μ•±, PostgreSQL DB)λ₯Ό μ •μ˜ν•˜κ³ , build, image, ports, volumes, environment, depends_on λ“±μ˜ μ˜΅μ…˜μ„ μ„€μ •.
  4. 데이터 μ˜μ†μ„±μ„ μœ„ν•œ Docker λ³Όλ₯¨(Volume) μ„€μ • 및 μ‚¬μš©.
  5. ν™˜κ²½ λ³€μˆ˜λ₯Ό μ΄μš©ν•œ μ„€μ • 관리 이점 이해 및 .env 파일 μž‘μ„±/ν™œμš©.
  6. FastAPI μ½”λ“œ λ‚΄ os.getenv()λ₯Ό μ‚¬μš©ν•œ ν™˜κ²½ λ³€μˆ˜ 읽기둜 μˆ˜μ •.