AIdentify / Dockerfile
rein0421's picture
Update Dockerfile
6bd43d6 verified
raw
history blame
1.95 kB
# ステップ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"]