diff --git a/Dockerfile b/Dockerfile index d0dd708..51c1687 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,33 +1,40 @@ -FROM python:3.10 -ADD . /app +# Use the latest stable Python 3.10 and Alpine image +FROM python:3.10-alpine3.19 -# Install dependencies including pandoc and AWS CLI -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ +# Set environment variables to avoid writing bytecode and unbuffered output +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONUNBUFFERED=1 + +# Install dependencies and upgrade vulnerable packages +RUN apk update && \ + apk upgrade && \ + apk add --no-cache \ pandoc \ - libexpat1 \ texlive-xetex \ - texlive-fonts-recommended \ - texlive-plain-generic \ - texlive-latex-extra \ - python3 \ - python3-pip \ - && pip3 install --upgrade pip \ - && pip3 install awscli \ - && apt-get clean && \ - rm -rf /var/lib/apt/lists/* + bash \ + build-base \ + mariadb-dev && \ + python3 -m ensurepip --upgrade && \ + pip install --no-cache-dir --upgrade pip && \ + pip install awscli +# Set the working directory for the application WORKDIR /app -RUN python -m venv venv -RUN . venv/bin/activate -RUN pip install --upgrade pip -RUN pip install setuptools wheel + +# Copy requirements file first to install dependencies separately +COPY requirements.txt /app/ + +# Install Python dependencies RUN pip install --no-cache-dir -r requirements.txt -# Make sure entrypoint.sh is executable +# Copy the rest of the application files +COPY . /app/ + +# Ensure that entrypoint.sh has executable permissions RUN chmod +x /app/entrypoint.sh +# Expose the application port EXPOSE 3000 -# Set the entrypoint +# Use a command to keep the container running or start the app ENTRYPOINT ["/bin/bash", "-c", "/app/entrypoint.sh"]