# ステップ1: ベースイメージ FROM python:3.10.9-slim # ステップ2: システム依存関係のインストール (rootユーザーで実行) # OpenCV, Playwright, curlに必要なライブラリをまとめてインストール RUN apt-get update && apt-get install -y --no-install-recommends \ libgl1-mesa-glx \ libglib2.0-0 \ 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 \ libxkbcommon0 \ curl \ && rm -rf /var/lib/apt/lists/* # 作業ディレクトリを /app に設定 WORKDIR /app # ステップ3: Python依存関係のインストール (キャッシュ効率化のため先に実行) COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # --- ここに新しい行を追加 --- # Playwrightのブラウザが appuser のキャッシュディレクトリにインストールされるように環境変数を設定 # /home/appuser は後で作成されるため、ここでは /app/.cache を指定 ENV PLAYWRIGHT_BROWSERS_PATH="/app/.cache/ms-playwright" # ステップ4: Playwrightブラウザのインストール # このステップは root ユーザーで実行される RUN playwright install chromium # ステップ5: アプリケーションコードのコピー COPY . . # ステップ6: ユーザーの作成と権限設定 RUN useradd -m appuser # /app ディレクトリ全体の所有権を appuser に変更 # これにより、/app/.cache も appuser がアクセスできるようになります 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"]