| # Dockerfile |
| FROM python:3.10-slim |
|
|
| # 1. μμ€ν
ν¨ν€μ§ μ€μΉ λ° μκ°λ μ€μ (Root κΆν) |
| RUN apt-get update && \ |
| apt-get install -y tzdata && \ |
| ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \ |
| echo "Asia/Seoul" > /etc/timezone && \ |
| apt-get clean && \ |
| rm -rf /var/lib/apt/lists/* |
|
|
| WORKDIR /app |
|
|
| # 2. μμ‘΄μ± νμΌ λ³΅μ¬ |
| COPY requirements.txt . |
|
|
| # 3. 'uv'λ₯Ό μ¬μ©νμ¬ ν¨ν€μ§ μ€μΉ (ν΅μ¬ ν΄κ²°μ±
) |
| # pip λμ uvλ₯Ό μ¬μ©νλ©΄ resolution-too-deep μλ¬λ₯Ό ν΄κ²°ν μ μμ΅λλ€. |
| # --system μ΅μ
μΌλ‘ μμ€ν
νμ΄μ¬ νκ²½μ μ§μ μ€μΉν©λλ€ (λ컀 λ΄λΆλ 격리λμ΄ μμΌλ―λ‘ μμ ν¨). |
| RUN pip install uv && \ |
| uv pip install --system --no-cache-dir -r requirements.txt |
|
|
| # 4. 보μμ μν΄ μ μ μμ± λ° μ ν |
| RUN useradd -m -u 1000 user |
| USER user |
| ENV PATH="/home/user/.local/bin:$PATH" |
|
|
| # 5. μμ€ μ½λ λ³΅μ¬ (μ μ κΆνμΌλ‘) |
| COPY --chown=user . /app |
|
|
| # 6. μλ² μ€ν |
| CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"] |