FROM python:3.11-slim

# 設定工作目錄
WORKDIR /app

# 安裝系統依賴 (包含 PostgreSQL 客戶端庫 + Chrome/Selenium 依賴)
# 注意：Debian Trixie 已移除 libgconf-2-4，改用 libglib2.0-0
RUN apt-get update && apt-get install -y \
    gcc \
    g++ \
    curl \
    libpq-dev \
    postgresql-client \
    # Chrome/Selenium 依賴
    wget \
    gnupg \
    unzip \
    libnss3 \
    libglib2.0-0 \
    libfontconfig1 \
    libx11-xcb1 \
    libasound2t64 \
    libatk1.0-0 \
    libatk-bridge2.0-0 \
    libcups2 \
    libdrm2 \
    libgbm1 \
    libgtk-3-0 \
    libxcomposite1 \
    libxdamage1 \
    libxrandr2 \
    xdg-utils \
    fonts-liberation \
    fonts-noto-cjk \
    fonts-noto-cjk-extra \
    libreoffice-impress \
    openssh-client \
    libappindicator3-1 || true \
    && rm -rf /var/lib/apt/lists/*

# 安裝 Chrome (使用新版 GPG 金鑰管理方式，apt-key 已被移除)
RUN mkdir -p /etc/apt/keyrings \
    && wget -q -O /etc/apt/keyrings/google-chrome.asc https://dl.google.com/linux/linux_signing_key.pub \
    && echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.asc] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list \
    && apt-get update \
    && apt-get install -y google-chrome-stable \
    && rm -rf /var/lib/apt/lists/*

# 複製 requirements
COPY requirements.txt .

# 安裝 Python 依賴
RUN pip install --no-cache-dir -r requirements.txt

# 複製應用程式
COPY . .

# 建立必要的目錄
RUN mkdir -p data logs backups

# 確保 components symlink 正確（根目錄頁面需要此路徑）
RUN rm -rf /app/components && ln -sf /app/templates/components /app/components

# 設定環境變數
ENV PYTHONUNBUFFERED=1
ENV FLASK_APP=app.py

# 暴露端口（容器內 app 綁 80，docker-compose / k8s 對外映射依環境而定）
EXPOSE 80

# 啟動應用（production 用 gunicorn；preload + post_fork DB pool reset 見 gunicorn.conf.py）
CMD ["gunicorn", "--config", "gunicorn.conf.py", "app:app"]
