SarahXia0405 commited on
Commit
e83859c
·
verified ·
1 Parent(s): 0e36683

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +11 -25
Dockerfile CHANGED
@@ -1,30 +1,17 @@
1
  # =========================
2
- # Stage 1: Build Frontend
3
  # =========================
4
  FROM node:20-slim AS web_builder
5
-
6
  WORKDIR /web
7
-
8
- # 1) 先只拷贝依赖声明,最大化缓存命中
9
- COPY web/package.json web/package-lock.json* ./
10
-
11
- # 2) 推荐 npm ci:更稳定、更可复现;如果没有 lock 文件会自动失败
12
- # 如果你没有 package-lock.json,就把 npm ci 改成 npm install
13
- RUN if [ -f package-lock.json ]; then npm ci; else npm install; fi
14
-
15
- # 3) 再拷贝其余前端代码并构建
16
  COPY web/ ./
17
- RUN npm run build
18
-
19
 
20
  # =========================
21
- # Stage 2: Python Runtime
22
  # =========================
23
- FROM python:3.11-slim AS runtime
24
-
25
- ENV PYTHONDONTWRITEBYTECODE=1 \
26
- PYTHONUNBUFFERED=1 \
27
- PORT=7860
28
 
29
  WORKDIR /app
30
 
@@ -32,14 +19,13 @@ WORKDIR /app
32
  COPY requirements.txt /app/requirements.txt
33
  RUN pip install --no-cache-dir -r /app/requirements.txt
34
 
35
- # ---- Copy backend ----
36
  COPY api/ /app/api/
37
 
38
- # ---- Copy built frontend dist from Stage 1 ----
39
- # server.py expects WEB_DIST = ../web/dist relative to /app/api
40
- # so we must place it at /app/web/dist
41
- COPY --from=web_builder /web/dist /app/web/dist
42
 
43
- # ---- Run API (serves web dist too) ----
 
44
  EXPOSE 7860
45
  CMD ["uvicorn", "api.server:app", "--host", "0.0.0.0", "--port", "7860"]
 
1
  # =========================
2
+ # 1) Web build stage
3
  # =========================
4
  FROM node:20-slim AS web_builder
 
5
  WORKDIR /web
6
+ COPY web/package*.json ./
7
+ RUN npm install
 
 
 
 
 
 
 
8
  COPY web/ ./
9
+ RUN npm run build # -> outputs /web/build (per your log)
 
10
 
11
  # =========================
12
+ # 2) API runtime stage
13
  # =========================
14
+ FROM python:3.11-slim
 
 
 
 
15
 
16
  WORKDIR /app
17
 
 
19
  COPY requirements.txt /app/requirements.txt
20
  RUN pip install --no-cache-dir -r /app/requirements.txt
21
 
22
+ # ---- Copy API source ----
23
  COPY api/ /app/api/
24
 
25
+ # ---- Copy built web assets ----
26
+ COPY --from=web_builder /web/build /app/web/build
 
 
27
 
28
+ # ---- Run API (serves web build too) ----
29
+ ENV PORT=7860
30
  EXPOSE 7860
31
  CMD ["uvicorn", "api.server:app", "--host", "0.0.0.0", "--port", "7860"]