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

refactor Dockerfile: consolidate package installation and remove packages.txt

Browse files
Files changed (2) hide show
  1. Dockerfile +14 -24
  2. packages.txt +0 -3
Dockerfile CHANGED
@@ -7,8 +7,7 @@ WORKDIR /app
7
 
8
  RUN apt-get update && \
9
  apt-get install -y --no-install-recommends \
10
- git curl \
11
- build-essential \
12
  && rm -rf /var/lib/apt/lists/*
13
 
14
  COPY . /app/env
@@ -18,23 +17,9 @@ RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
18
  mv /root/.local/bin/uv /usr/local/bin/uv && \
19
  mv /root/.local/bin/uvx /usr/local/bin/uvx
20
 
21
- RUN --mount=type=cache,target=/root/.cache/uv \
22
- if [ -f uv.lock ]; then \
23
- uv sync --frozen --no-install-project --no-editable; \
24
- else \
25
- uv sync --no-install-project --no-editable; \
26
- fi
27
-
28
- RUN --mount=type=cache,target=/root/.cache/uv \
29
- if [ -f uv.lock ]; then \
30
- uv sync --frozen --no-editable; \
31
- else \
32
- uv sync --no-editable; \
33
- fi
34
-
35
- RUN /app/env/.venv/bin/python -m nltk.downloader \
36
- wordnet omw-1.4 stopwords punkt \
37
- averaged_perceptron_tagger_eng punkt_tab
38
 
39
 
40
  # -------- RUNTIME STAGE --------
@@ -42,16 +27,21 @@ FROM ${BASE_IMAGE}
42
 
43
  WORKDIR /app
44
 
45
- COPY --from=builder /app/env/.venv /app/env/.venv
46
  COPY --from=builder /app/env /app/env
47
- COPY --from=builder /root/nltk_data /root/nltk_data
 
 
 
 
 
48
 
49
- ENV PATH="/app/env/.venv/bin:$PATH"
50
- ENV PYTHONPATH="/app/env:$PYTHONPATH"
51
 
52
  HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
53
  CMD curl -f http://localhost:7860/health || exit 1
54
 
55
  ENTRYPOINT []
56
- CMD ["/app/env/.venv/bin/uvicorn", "server.app:app", \
57
  "--host", "0.0.0.0", "--port", "7860", "--app-dir", "/app/env"]
 
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
 
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 --------
 
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"]
packages.txt DELETED
@@ -1,3 +0,0 @@
1
- # packages.txt
2
- build-essential
3
- python3-dev