
FastAPIμ κ°μ λ°±μλ μ ν리μΌμ΄μ μ λ§λ€ λ λ°λμ ν¨κ» μ΄ν΄ν΄μΌ νλ κ°λ μ΄ μλ€.
λ°λ‘ νκ²½ λ³μ(Environment Variables)λ€.
λ¨μ΄λΆν° μ°¨κ·Όν νμ΄λ³΄μ.
μ¦, νκ²½ λ³μλ
π μ΄μ체μ (OS)μ μ μ₯λμ΄ μκ³ , νλ‘κ·Έλ¨μ΄ μ½μ΄μ¬ μ μλ κ°
μ€μν μ μ μ΄ κ°μ΄
νκ²½ λ³μλ μ§ μμ λΆμ΄ μλ μ£Όμνκ³Ό κ°λ€.
π μ½λλ₯Ό μμ νμ§ μκ³ λ μ€μ κ°μ λ°κΏ μ μκ² ν΄μ£Όλ μ₯μΉλ€
| μ΄μ | μ€λͺ |
|---|---|
| 보μ | λΉλ°λ²νΈ, API ν€λ₯Ό μ½λμ μ§μ μ°μ§ μμλ λ¨ |
| νκ²½ λΆλ¦¬ | κ°λ° / ν μ€νΈ / μ΄μ νκ²½μ μ½κ² κ΅¬λΆ κ°λ₯ |
| μ μ°μ± | κ°μ μ½λλ‘ λ€λ₯Έ μ€μ μ μ¬μ© κ°λ₯ |
| νμ€ | νλ μΉ μλΉμ€μ κΈ°λ³Έ μ€μ λ°©μ |
π FastAPI, Docker, AWS, Kubernetes λͺ¨λ νκ²½ λ³μ κΈ°λ° μ€μ μ κΈ°λ³Έ μ μ λ‘ νλ€
# νκ²½ λ³μ μ€μ
export MY_NAME="μ² μ"
# νκ²½ λ³μ μ¬μ©
echo "μλ
νμΈμ $MY_NAME"
μΆλ ₯ κ²°κ³Ό:
μλ
νμΈμ μ² μ
$Env:MY_NAME = "μ² μ"
echo "μλ
νμΈμ $Env:MY_NAME"
μ΄μ체μ μ μ€μ λ νκ²½ λ³μλ
Python μ½λμμ os.getenvλ‘ μ½μ μ μλ€.
import os
# νκ²½ λ³μ μ½κΈ° (μμΌλ©΄ κΈ°λ³Έκ° μ¬μ©)
name = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")
νκ²½ λ³μκ° μμΌλ©΄ κΈ°λ³Έκ° "World"κ° μ¬μ©λλ€.
π Pythonμ νκ²½ λ³μλ₯Ό μ μ₯νμ§ μλλ€
λ¨μ§ μμ²ν΄μ μ½μ΄μ¬ λΏμ΄λ€
νκ²½ λ³μλ μ΄μ체μ λ 벨μ μ‘΄μ¬νκΈ° λλ¬Έμ νμ λ¬Έμμ΄(str)λ‘ μ λ¬λλ€.
import os
port_str = os.getenv("PORT", "8000")
print(type(port_str)) # <class 'str'>
# μ«μκ° νμνλ©΄ μ§μ λ³ν
port = int(port_str)
print(type(port)) # <class 'int'>
π νμ λ³νμ κ°λ°μμ μ± μμ΄λ€
νΉμ λͺ λ Ήμ΄λ₯Ό μ€νν λλ§ νκ²½ λ³μλ₯Ό μ°κ³ μΆμ μλ μλ€.
MY_NAME="μν¬" python main.py
PATHλ μ΄μ체μ κ° μ€νν νλ‘κ·Έλ¨μ μ°Ύλ κ²½λ‘ λͺ©λ‘μ΄λ€.
ν°λ―Έλμμ pythonμ μ
λ ₯νλ©΄,
/usr/local/bin:/usr/bin:/bin
μμμ λ°°μ΄ κ°μ νκ²½μ΄ λμνλ μ΄μ λ λ°λ‘ μ΄ PATH λλ¬Έμ΄λ€.
νκ²½ λ³μ κΈ°λ° μ€μ μ Twelve-Factor Appμ΄λΌλ νλ μ ν리μΌμ΄μ μ€κ³ μμΉμ ν΅μ¬μ΄λ€.
π μ€μ μ μ½λμ λ£μ§ λ§κ³ νκ²½μ λ¬λΌ