Alina Lozovskaya commited on
Commit
aa33679
·
1 Parent(s): d1ed69b

Fix ownership Dockerfile

Browse files
Files changed (2) hide show
  1. Dockerfile +34 -13
  2. uv.lock +4 -4
Dockerfile CHANGED
@@ -1,30 +1,51 @@
1
- # Use Python 3.12.1 slim image as base
2
  FROM python:3.12.1-slim
3
 
4
- # Install dependencies required for UV and Python packages
5
  RUN apt-get update && apt-get install -y --no-install-recommends \
6
  curl ca-certificates git && \
7
  rm -rf /var/lib/apt/lists/*
8
 
9
  # Install UV (fast Python dependency manager)
10
- RUN curl -LsSf https://astral.sh/uv/install.sh | sh
 
11
 
12
- # Ensure UV is available in PATH
13
- ENV PATH="/root/.local/bin:$PATH"
 
 
 
 
 
 
 
 
 
14
 
15
  # Set working directory
16
- WORKDIR /app
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
- # Copy pyproject and install dependencies using UV
19
- COPY pyproject.toml .
20
- RUN uv venv && uv sync
21
 
22
- # Copy application code
23
- COPY app.py .
24
 
25
  # Expose Gradio app port
26
  EXPOSE 7860
27
  ENV GRADIO_SERVER_NAME="0.0.0.0"
28
 
29
- # Entrypoint to run the Gradio app
30
- ENTRYPOINT ["uv", "run", "python", "app.py"]
 
1
+ # Use a minimal Python image
2
  FROM python:3.12.1-slim
3
 
4
+ # Install system dependencies required for UV and Git
5
  RUN apt-get update && apt-get install -y --no-install-recommends \
6
  curl ca-certificates git && \
7
  rm -rf /var/lib/apt/lists/*
8
 
9
  # Install UV (fast Python dependency manager)
10
+ RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
11
+ mv /root/.local/bin/uv /usr/local/bin/uv && chmod +x /usr/local/bin/uv
12
 
13
+ # Verify UV installation
14
+ RUN uv --version
15
+
16
+ # Create a non-root user for security
17
+ RUN useradd -m -u 1000 uvuser
18
+
19
+ # Set environment variables properly
20
+ ENV HOME=/home/uvuser \
21
+ PATH="/usr/local/bin:$PATH" \
22
+ XDG_CACHE_HOME=/home/uvuser/.cache \
23
+ UV_VENV_PATH="/home/uvuser/.venv"
24
 
25
  # Set working directory
26
+ WORKDIR /home/uvuser/app
27
+
28
+ # Ensure necessary directories exist and are writable
29
+ RUN mkdir -p /app/uploaded_files /home/uvuser/.cache && chown -R uvuser:uvuser /app /home/uvuser
30
+
31
+ # Copy pyproject.toml and uv.lock to the working directory
32
+ COPY pyproject.toml uv.lock ./
33
+
34
+ # Create the virtual environment and install dependencies as root
35
+ RUN uv venv && uv sync $(test -f uv.lock && echo "--frozen" || echo "")
36
+
37
+ # Fix ownership of cache and installed dependencies
38
+ RUN chown -R uvuser:uvuser /home/uvuser/.cache /home/uvuser/.venv /home/uvuser/app || true
39
 
40
+ # Switch to non-root user before running the app
41
+ USER uvuser
 
42
 
43
+ # Copy the rest of the application code
44
+ COPY --chown=uvuser:uvuser . ./
45
 
46
  # Expose Gradio app port
47
  EXPOSE 7860
48
  ENV GRADIO_SERVER_NAME="0.0.0.0"
49
 
50
+ # Run the application
51
+ CMD ["uv", "run", "python", "app.py"]
uv.lock CHANGED
@@ -1150,7 +1150,7 @@ wheels = [
1150
 
1151
  [[package]]
1152
  name = "openai"
1153
- version = "1.65.2"
1154
  source = { registry = "https://pypi.org/simple" }
1155
  dependencies = [
1156
  { name = "anyio" },
@@ -1162,9 +1162,9 @@ dependencies = [
1162
  { name = "tqdm" },
1163
  { name = "typing-extensions" },
1164
  ]
1165
- sdist = { url = "https://files.pythonhosted.org/packages/f6/03/0bbf201a7e44920d892db0445874c8111be4255cb9495379df18d6d36ea1/openai-1.65.2.tar.gz", hash = "sha256:729623efc3fd91c956f35dd387fa5c718edd528c4bed9f00b40ef290200fb2ce", size = 359185 }
1166
  wheels = [
1167
- { url = "https://files.pythonhosted.org/packages/2c/3b/722ed868cb56f70264190ed479b38b3e46d14daa267d559a3fe3bd9061cf/openai-1.65.2-py3-none-any.whl", hash = "sha256:27d9fe8de876e31394c2553c4e6226378b6ed85e480f586ccfe25b7193fb1750", size = 473206 },
1168
  ]
1169
 
1170
  [[package]]
@@ -2042,7 +2042,7 @@ wheels = [
2042
  [[package]]
2043
  name = "yourbench"
2044
  version = "0.2.0"
2045
- source = { git = "https://github.com/huggingface/yourbench.git?rev=v0.2-alpha-summarization#405b90ee6ce4fa97c685da3d1124208a1cca6eeb" }
2046
  dependencies = [
2047
  { name = "asyncio" },
2048
  { name = "datasets" },
 
1150
 
1151
  [[package]]
1152
  name = "openai"
1153
+ version = "1.65.3"
1154
  source = { registry = "https://pypi.org/simple" }
1155
  dependencies = [
1156
  { name = "anyio" },
 
1162
  { name = "tqdm" },
1163
  { name = "typing-extensions" },
1164
  ]
1165
+ sdist = { url = "https://files.pythonhosted.org/packages/32/4f/b34b6fad12e1f6b3f42922214c161d5ef74a50fa97d9ae7d680db0958ff4/openai-1.65.3.tar.gz", hash = "sha256:9b7cd8f79140d03d77f4ed8aeec6009be5dcd79bbc02f03b0e8cd83356004f71", size = 358821 }
1166
  wheels = [
1167
+ { url = "https://files.pythonhosted.org/packages/86/d5/b8378be0f4cf192992aa3080eb9ddcdca3109b399be61984424aaa79f847/openai-1.65.3-py3-none-any.whl", hash = "sha256:a155fa5d60eccda516384d3d60d923e083909cc126f383fe4a350f79185c232a", size = 472758 },
1168
  ]
1169
 
1170
  [[package]]
 
2042
  [[package]]
2043
  name = "yourbench"
2044
  version = "0.2.0"
2045
+ source = { git = "https://github.com/huggingface/yourbench.git?rev=v0.2-alpha-summarization#11d9df14106262cd5f768808307d9ca48c532e02" }
2046
  dependencies = [
2047
  { name = "asyncio" },
2048
  { name = "datasets" },