Working version
This commit is contained in:
60
Dockerfile
Normal file
60
Dockerfile
Normal file
@@ -0,0 +1,60 @@
|
||||
# Dockerfile
|
||||
FROM python:3.11-slim
|
||||
|
||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PIP_NO_CACHE_DIR=1 \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
TZ=America/New_York
|
||||
|
||||
# System deps for Chromium/chromedriver + rendering & lxml
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
chromium \
|
||||
chromium-driver \
|
||||
ca-certificates \
|
||||
fonts-liberation \
|
||||
fonts-dejavu \
|
||||
libx11-6 \
|
||||
libxcomposite1 \
|
||||
libxdamage1 \
|
||||
libxext6 \
|
||||
libxfixes3 \
|
||||
libxrandr2 \
|
||||
libgbm1 \
|
||||
libgtk-3-0 \
|
||||
libnss3 \
|
||||
libasound2 \
|
||||
libatk-bridge2.0-0 \
|
||||
libatk1.0-0 \
|
||||
libcairo2 \
|
||||
libpango-1.0-0 \
|
||||
tzdata \
|
||||
build-essential \
|
||||
libxml2-dev \
|
||||
libxslt1-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Ensure Chromium is on a known path
|
||||
ENV CHROME_BIN=/usr/bin/chromium \
|
||||
CHROMEDRIVER=/usr/bin/chromedriver
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy deps first for better caching
|
||||
COPY requirements.txt .
|
||||
RUN pip install -r requirements.txt
|
||||
|
||||
# Copy the app
|
||||
COPY run.py ./run.py
|
||||
COPY entrypoint.sh ./entrypoint.sh
|
||||
COPY src ./src
|
||||
COPY config ./config
|
||||
|
||||
# Make sure data/ exists at runtime (also volume-mounted by compose)
|
||||
RUN mkdir -p /app/data && chmod +x /app/entrypoint.sh
|
||||
|
||||
# Non-root user (optional)
|
||||
RUN useradd -ms /bin/bash appuser && chown -R appuser:appuser /app
|
||||
USER appuser
|
||||
|
||||
ENTRYPOINT ["/app/entrypoint.sh"]
|
Reference in New Issue
Block a user