# Dockerfile

# 使用 Python 官方的 slim-bookworm 映像作為基礎 (Python 3.12, Debian 12)
# slim 版本比較輕量，適合部署
FROM python:3.12-slim-bookworm

# 安裝系統依賴套件。這些是常見用於網頁自動化 (Playwright) 和影像處理 (OpenCV) 的依賴。
# 請根據你的專案需求，移除不需要的套件，以減少映像檔大小。
# apt-get update 用來更新套件清單，apt-get install -y --no-install-recommends 安裝指定的套件
# --no-install-recommends 會避免安裝非必要的建議套件
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    libsecret-1-0 \
    libgtk-3-0 \
    libgdk-pixbuf2.0-0 \
    libxss1 \
    libasound2 \
    libdrm-dev \
    libgbm-dev \
    libnss3-dev \
    libatk-bridge2.0-0 \
    libcups2 \
    libxrandr2 \
    libxcomposite1 \
    libxcursor1 \
    libxdamage1 \
    libxext6 \
    libxfixes3 \
    libxi6 \
    libxrender1 \
    libxtst6 \
    curl \
    gnupg \
    ca-certificates \
    libgl1 \
    tesseract-ocr \
    tesseract-ocr-eng \
    && rm -rf /var/lib/apt/lists/* # 清理 apt 快取，讓映像檔更小

# 設定應用程式在容器內的工作目錄
WORKDIR /app

# 複製你的 Python 依賴清單到工作目錄
COPY requirements.txt ./

# 安裝 Python 依賴套件
# --no-cache-dir 會避免快取 pip 下載的套件，再次減少映像檔大小
RUN pip install --no-cache-dir -r requirements.txt

# 如果你的應用程式需要用到 Playwright，這裡會安裝其瀏覽器驅動。
# 如果不需要，你可以把這行註解掉或移除。
# 這會把瀏覽器安裝到 /root/.cache/ms-playwright
RUN python -m playwright install chromium firefox webkit

# 如果使用 Playwright，設定環境變數，讓 Playwright 知道瀏覽器在哪裡
# 如果不需要 Playwright，這行也可以移除。
ENV PLAYWRIGHT_BROWSERS_PATH=/root/.cache/ms-playwright

# 複製你的應用程式碼到 Image 中
# 通常會把整個專案複製進去
# 請記得更新這裡的來源和目的地，例如 `COPY . .` 如果你的 Dockerfile 在專案根目錄
# COPY . .

# 定義容器啟動時執行的命令
# 將 'your_main_app_file.py' 替換成你的主要執行檔名稱
CMD ["python", "your_main_app_file.py"]
