Corin1998 commited on
Commit
ba63f46
·
verified ·
1 Parent(s): 9636f7b

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +54 -21
Dockerfile CHANGED
@@ -1,30 +1,63 @@
1
  FROM python:3.11-slim
 
 
 
 
 
 
 
2
  WORKDIR /app
3
 
4
- # optional: system deps
5
- RUN apt-get update && apt-get install -y build-essential && rm -rf /var/lib/apt/lists/*
 
 
 
6
 
7
- # まずリポジトリ全体をコピー(サブディレクトリ構成の違いを吸収)
8
  COPY . /app
9
 
10
- # 依存関係のインストール(backend/requirements.txt 優先、なければ ルートの requirements.txt)
11
- RUN if [ -f backend/requirements.txt ]; then \
12
- pip install --no-cache-dir -r backend/requirements.txt ; \
13
- elif [ -f requirements.txt ]; then \
14
- pip install --no-cache-dir -r requirements.txt ; \
15
- else \
16
- echo "No requirements.txt found (expected backend/requirements.txt or requirements.txt)" && exit 1 ; \
17
- fi
18
-
19
- # FastAPI アプリの実体を /app/app に揃える
20
- # - backend/app があれば移動
21
- # - ルートに app/ あるなその
22
- RUN if [ -d /app/backend/app ]; then \
23
- rm -rf /app/app && mv /app/backend/app /app/app ; \
24
- fi
25
-
26
- # Uvicorn の起動先が存在するか確認(app/main.py がないと落とす)
27
- RUN test -f /app/app/main.py || (echo "Missing /app/app/main.py" && ls -R /app && exit 1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
 
29
  EXPOSE 8000
30
  CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
 
1
  FROM python:3.11-slim
2
+
3
+ # ==== 基本設定 ====
4
+ ENV PYTHONDONTWRITEBYTECODE=1 \
5
+ PYTHONUNBUFFERED=1 \
6
+ PIP_NO_CACHE_DIR=1 \
7
+ DEBIAN_FRONTEND=noninteractive
8
+
9
  WORKDIR /app
10
 
11
+ # ==== 必要ならビルド系ツール(最小限) ====
12
+ # 依存にネイティブ拡張が無いなら、この層は省略可
13
+ RUN apt-get update \
14
+ && apt-get install -y --no-install-recommends build-essential \
15
+ && rm -rf /var/lib/apt/lists/*
16
 
17
+ # ==== リポジトリ全体をコピー(サブディレクトリ差異を吸収) ====
18
  COPY . /app
19
 
20
+ # ==== Python依存のインストール ====
21
+ # 1) backend/requirements.txt があればそれを使用
22
+ # 2) なければ ルートの requirements.txt
23
+ # 3) どちらも無ければ必要パッケージを直接インストール(フォールバック)
24
+ RUN bash -lc '\
25
+ set -euo pipefail; \
26
+ if [ -f backend/requirements.txt ]; then \
27
+ pip install --no-cache-dir -r backend/requirements.txt; \
28
+ elif [ -f requirements.txt ]; then \
29
+ pip install --no-cache-dir -r requirements.txt; \
30
+ else \
31
+ echo "[info] requirements.txt見つかないため、必要パッケージを直接インストールしす"; \
32
+ pip install --no-cache-dir \
33
+ fastapi==0.112.0 \
34
+ uvicorn[standard]==0.30.6 \
35
+ pydantic==2.8.2 \
36
+ python-dotenv==1.0.1 \
37
+ httpx==0.27.0 \
38
+ openai==1.50.0; \
39
+ fi'
40
+
41
+ # ==== アプリ配置の正規化 ====
42
+ # - backend/app が存在する場合は /app/app へ移動
43
+ # - 既にルートに app/ がある場合はそのまま
44
+ RUN bash -lc '\
45
+ set -euo pipefail; \
46
+ if [ -d /app/backend/app ]; then \
47
+ rm -rf /app/app && mv /app/backend/app /app/app; \
48
+ fi'
49
+
50
+ # ==== エントリ確認 ====
51
+ # /app/app/main.py が存在しない場合はビルド失敗にして内容を一覧表示
52
+ RUN bash -lc '\
53
+ set -e; \
54
+ if [ ! -f /app/app/main.py ]; then \
55
+ echo "[error] Missing /app/app/main.py"; \
56
+ echo "----- /app tree -----"; \
57
+ ls -R /app || true; \
58
+ exit 1; \
59
+ fi'
60
 
61
+ # ==== ポート / 起動 ====
62
  EXPOSE 8000
63
  CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]