yotter / Dockerfile
soiz1's picture
Update Dockerfile
b491a76 verified
# ベースイメージ
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