understanding commited on
Commit
2881fd0
·
verified ·
1 Parent(s): b0363b8

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +27 -18
Dockerfile CHANGED
@@ -5,7 +5,7 @@ FROM python:3.10-slim
5
  ENV DEBIAN_FRONTEND=noninteractive
6
 
7
  # Install system dependencies
8
- # - Essential for Pillow/OpenCV: libgl1-mesa-glx, libglib2.0-0
9
  # - Font handling: fontconfig
10
  # - Installs Microsoft Core Fonts (including Arial): ttf-mscorefonts-installer
11
  RUN apt-get update && \
@@ -16,48 +16,57 @@ RUN apt-get update && \
16
  # Accept the EULA for ttf-mscorefonts-installer non-interactively
17
  && echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections \
18
  && apt-get install -y --no-install-recommends ttf-mscorefonts-installer \
 
19
  && apt-get clean \
20
  && rm -rf /var/lib/apt/lists/* \
21
- # Update font cache to make installed fonts available
22
  && fc-cache -f -v
23
 
24
- # Set the working directory in the container
25
  WORKDIR /app
26
 
27
- # Create a non-root user and group for better security
28
- # Using user ID 1000 as is common in HF Spaces
29
  RUN groupadd -g 1000 appuser && useradd --no-log-init -u 1000 -g appuser appuser
30
 
31
- # Create necessary application directories before copying and set ownership
32
- # Ensures the user 'appuser' can write to generated_images
 
 
33
  RUN mkdir -p /app/templates /app/generated_images && \
34
  chown -R appuser:appuser /app
35
 
36
- # Copy the requirements file first for layer caching
37
- # Ensure ownership is set correctly during copy
38
  COPY --chown=appuser:appuser requirements.txt .
39
 
40
- # Install Python dependencies specified in requirements.txt
 
41
  RUN pip install --no-cache-dir -r requirements.txt
42
 
43
- # Copy the rest of the application files into the container
44
- # Ensure 'app.py', 'arial.ttf', and the 'templates' directory exist in your repo root
45
  COPY --chown=appuser:appuser app.py .
46
 
47
  # ---- IMPORTANT ----
48
- # The following line requires 'arial.ttf' to be present in the root of your repository
 
49
  COPY --chown=appuser:appuser arial.ttf .
50
  # ---- IMPORTANT ----
51
 
52
- # Copy the entire templates directory
 
 
53
  COPY --chown=appuser:appuser templates ./templates
54
 
55
- # Switch to the non-root user
 
56
  USER appuser
57
 
58
- # Define environment variable placeholder (Hugging Face Secrets will override this)
59
- # You MUST set TELEGRAM_TOKEN in your Space's secrets settings.
60
  ENV TELEGRAM_TOKEN=""
61
 
62
- # Command to run the application when the container launches
 
63
  CMD ["python", "app.py"]
 
5
  ENV DEBIAN_FRONTEND=noninteractive
6
 
7
  # Install system dependencies
8
+ # - Essential for Pillow image processing: libgl1-mesa-glx, libglib2.0-0
9
  # - Font handling: fontconfig
10
  # - Installs Microsoft Core Fonts (including Arial): ttf-mscorefonts-installer
11
  RUN apt-get update && \
 
16
  # Accept the EULA for ttf-mscorefonts-installer non-interactively
17
  && echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections \
18
  && apt-get install -y --no-install-recommends ttf-mscorefonts-installer \
19
+ # Clean up apt caches to reduce image size
20
  && apt-get clean \
21
  && rm -rf /var/lib/apt/lists/* \
22
+ # Update font cache to make installed fonts available to applications like Pillow
23
  && fc-cache -f -v
24
 
25
+ # Set the working directory in the container for subsequent commands
26
  WORKDIR /app
27
 
28
+ # Create a non-root user and group for better security.
29
+ # Using UID/GID 1000 is common for Hugging Face Spaces.
30
  RUN groupadd -g 1000 appuser && useradd --no-log-init -u 1000 -g appuser appuser
31
 
32
+ # Create necessary application directories within /app.
33
+ # Then, set ownership of the entire /app directory (and its contents)
34
+ # to the 'appuser'. This ensures the application, running as 'appuser',
35
+ # has the necessary permissions, especially for /app/generated_images.
36
  RUN mkdir -p /app/templates /app/generated_images && \
37
  chown -R appuser:appuser /app
38
 
39
+ # Copy the requirements file first to leverage Docker layer caching.
40
+ # Ensure 'appuser' owns this copied file.
41
  COPY --chown=appuser:appuser requirements.txt .
42
 
43
+ # Install Python dependencies specified in requirements.txt.
44
+ # --no-cache-dir reduces image size by not storing the pip cache.
45
  RUN pip install --no-cache-dir -r requirements.txt
46
 
47
+ # Copy the rest of the application files into the container's /app directory.
48
+ # Ensure 'appuser' owns these copied files.
49
  COPY --chown=appuser:appuser app.py .
50
 
51
  # ---- IMPORTANT ----
52
+ # The following line requires 'arial.ttf' to be present in the root of your repository.
53
+ # This file will be copied to /app/arial.ttf inside the container.
54
  COPY --chown=appuser:appuser arial.ttf .
55
  # ---- IMPORTANT ----
56
 
57
+ # Copy the entire 'templates' directory (and its contents) from your repository root
58
+ # to /app/templates inside the container.
59
+ # This requires the 'templates' directory to exist in your repository root.
60
  COPY --chown=appuser:appuser templates ./templates
61
 
62
+ # Switch to the non-root user 'appuser' for running the application.
63
+ # Subsequent commands (like CMD) will run as this user.
64
  USER appuser
65
 
66
+ # Define an environment variable placeholder for the Telegram token.
67
+ # The actual token MUST be set in your Hugging Face Space's secrets settings.
68
  ENV TELEGRAM_TOKEN=""
69
 
70
+ # Command to run the application when the container launches.
71
+ # This executes 'python app.py' as the 'appuser'.
72
  CMD ["python", "app.py"]