File size: 1,682 Bytes
2480172
15a0091
29963c4
2480172
29963c4
 
2480172
29963c4
 
2480172
29963c4
 
2480172
 
 
 
 
 
 
 
 
 
 
 
 
 
143771e
29963c4
 
2480172
29963c4
 
bca2431
 
 
29963c4
 
bca2431
2480172
29963c4
 
143771e
29963c4
143771e
 
 
 
 
29963c4
051d5fd
 
 
 
e658d6b
b491a76
 
 
e658d6b
2480172
 
29963c4
2480172
29963c4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# ベースイメージ
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