ajaxwin commited on
Commit
2031e4c
·
1 Parent(s): 0225bde

original dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +29 -37
Dockerfile CHANGED
@@ -1,47 +1,39 @@
1
- ARG BASE_IMAGE=ghcr.io/meta-pytorch/openenv-base:latest
2
-
3
- # -------- BUILDER STAGE --------
4
- FROM python:3.12-slim AS builder
5
-
6
- WORKDIR /app
7
-
8
- RUN apt-get update && \
9
- apt-get install -y --no-install-recommends \
10
- git curl build-essential \
 
 
 
11
  && rm -rf /var/lib/apt/lists/*
12
 
13
- COPY . /app/env
14
- WORKDIR /app/env
15
-
16
- RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
17
- mv /root/.local/bin/uv /usr/local/bin/uv && \
18
- mv /root/.local/bin/uvx /usr/local/bin/uvx
19
-
20
- # Install into a fixed target directory (no venv, no symlinks)
21
- RUN --mount=type=cache,target=/root/.cache/pip \
22
- pip install --target /app/packages -r requirements.txt
23
-
24
-
25
- # -------- RUNTIME STAGE --------
26
- FROM ${BASE_IMAGE}
27
 
28
  WORKDIR /app
29
 
30
- # Copy source code and pre-installed packages
31
- COPY --from=builder /app/env /app/env
32
- COPY --from=builder /app/packages /app/packages
33
-
34
- # Download NLTK data using the packages we just copied
35
- RUN PYTHONPATH=/app/packages python -m nltk.downloader \
36
- wordnet omw-1.4 stopwords punkt \
37
- averaged_perceptron_tagger_eng punkt_tab
38
 
39
- # packages dir prepended so it shadows anything in the base image
40
- ENV PYTHONPATH="/app/packages:/app/env:$PYTHONPATH"
41
 
42
- HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
43
- CMD curl -f http://localhost:7860/health || exit 1
44
 
45
- ENTRYPOINT []
46
  CMD ["python", "-m", "uvicorn", "server.app:app", \
47
  "--host", "0.0.0.0", "--port", "7860", "--app-dir", "/app/env"]
 
1
+ # SmartAudit-Env Dockerfile
2
+ # Supports: HF Space (Gradio on :7860) and REST API (FastAPI on :8000)
3
+ #
4
+ # Build: docker build -t smartaudit-env .
5
+ # Run UI: docker run -p 7860:7860 smartaudit-env
6
+ # Run API:docker run -p 8000:8000 smartaudit-env python -m uvicorn server:app --host 0.0.0.0 --port 8000
7
+
8
+ FROM python:3.11-slim
9
+
10
+ # ---- System deps ----
11
+ RUN apt-get update && apt-get install -y --no-install-recommends \
12
+ build-essential \
13
+ curl \
14
  && rm -rf /var/lib/apt/lists/*
15
 
16
+ # ---- Create non-root user (required by HF Spaces) ----
17
+ RUN useradd -m -u 1000 user
18
+ USER user
19
+ ENV HOME=/home/user \
20
+ PATH=/home/user/.local/bin:$PATH \
21
+ PYTHONDONTWRITEBYTECODE=1 \
22
+ PYTHONUNBUFFERED=1
 
 
 
 
 
 
 
23
 
24
  WORKDIR /app
25
 
26
+ # ---- Python deps ----
27
+ COPY --chown=user requirements.txt .
28
+ RUN pip install --no-cache-dir --upgrade pip \
29
+ && pip install --no-cache-dir -r requirements.txt
 
 
 
 
30
 
31
+ # ---- Application code ----
32
+ COPY --chown=user . .
33
 
34
+ # ---- HF Space metadata (must expose port 7860) ----
35
+ EXPOSE 7860 8000
36
 
37
+ # ---- Default: launch Gradio UI ----
38
  CMD ["python", "-m", "uvicorn", "server.app:app", \
39
  "--host", "0.0.0.0", "--port", "7860", "--app-dir", "/app/env"]