# ベースイメージ FROM python:3.11 AS base # Build環境用イメージ FROM base AS builder # 作業ディレクトリの設定 WORKDIR /usr/src/app # 必要なファイルをコピー COPY ./requirements.txt /usr/src/app # Build用依存関係のインストール RUN apt-get update && apt-get install -y \ gcc \ libffi-dev \ libssl-dev \ libxml2-dev \ libxslt1-dev \ build-essential \ cargo \ rustc \ python3.11-dev \ && rm -rf /var/lib/apt/lists/* # Pythonライブラリのインストール RUN pip install --no-cache-dir --upgrade pip setuptools wheel RUN pip install --no-cache-dir --prefix=/install -r requirements.txt # Runtime環境用イメージ FROM base # ユーザー作成と変更 RUN groupadd -r appgroup && useradd -r -g appgroup appuser USER appuser WORKDIR /usr/src/app # builderフェーズから依存関係をコピー COPY --from=builder /install /usr/local # ソースコードと環境ファイルをコピー COPY . . COPY .env /usr/src/app/.env # SQLiteデータベース用のディレクトリ作成と権限設定 RUN mkdir -p /usr/src/app \ && chmod 777 /usr/src/app # Flask DBマイグレーションの初期化 RUN flask db init || true # 既にmigrationsが存在する場合はエラーを無視 RUN flask db migrate || true # 初期状態で変更がない場合もエラーを無視 # SQLiteデータベース用のディレクトリ作成と権限設定 RUN mkdir -p /usr/src/app/app.db \ && chmod 777 /usr/src/app/app.db # Flaskアプリの実行コマンド CMD flask db upgrade && gunicorn -b 0.0.0.0:5000 -w 4 yotter:app # 必要なポートをExpose EXPOSE 5000