Spaces:
Running
Running
# ステップ1: ベースイメージ | |
# 元のバージョンを尊重しつつ、より軽量なslimイメージを使用 | |
FROM python:3.10.9-slim | |
# ステップ2: システム依存関係のインストール (rootユーザーで実行) | |
# OpenCV, Playwright, curlに必要なライブラリをまとめてインストール | |
# ステップ2: システム依存関係のインストール (rootユーザーで実行) | |
# OpenCV, Playwright, curlに必要なライブラリをまとめてインストール | |
RUN apt-get update && apt-get install -y --no-install-recommends \ | |
# OpenCV dependencies | |
libgl1-mesa-glx \ | |
libglib2.0-0 \ | |
# Playwright dependencies | |
libnss3 libnspr4 libdbus-1-3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libatspi2.0-0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libpango-1.0-0 libcairo2 libasound2 \ | |
# Other dependencies | |
curl \ | |
&& rm -rf /var/lib/apt/lists/* | |
# 作業ディレクトリを /app に設定 | |
WORKDIR /app | |
# ステップ3: Python依存関係のインストール (キャッシュ効率化のため先に実行) | |
# requirements.txtを先にコピーすることで、このレイヤーのキャッシュが効きやすくなります | |
COPY requirements.txt . | |
RUN pip install --no-cache-dir -r requirements.txt | |
# ステップ4: Playwrightブラウザのインストール | |
# 依存関係はステップ2でインストール済み | |
RUN playwright install chromium | |
# ステップ5: アプリケーションコードのコピー | |
COPY . . | |
# ステップ6: ユーザーの作成と権限設定 | |
# root権限が必要な処理を先に済ませてからユーザーを作成・切り替え | |
RUN useradd -m appuser | |
# /app ディレクトリ全体の所有権を appuser に変更 (saved_imagesも含まれる) | |
RUN chown -R appuser:appuser /app | |
# 非rootユーザーに切り替え | |
USER appuser | |
# /home/appuser/.local/bin を PATH に追加 | |
ENV PATH="/home/appuser/.local/bin:${PATH}" | |
# FastAPIアプリの環境変数を設定 | |
ENV PYTHONPATH=/app | |
# FastAPIアプリの起動 | |
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"] | |