FROM python:3.11-slim # Create a non-root user to run the app as RUN addgroup --system app && adduser --system --group app # Environment variables ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ PIP_NO_CACHE_DIR=off \ PIP_DISABLE_PIP_VERSION_CHECK=on \ PIP_DEFAULT_TIMEOUT=100 \ POETRY_VIRTUALENVS_IN_PROJECT=true \ # Set Poetry to NOT install the dependencies into a virtual environment, instead install them into the system's Python environment POETRY_VIRTUALENVS_CREATE=false \ POETRY_NO_INTERACTION=1 \ PYTHONPATH=${PYTHONPATH}:${PWD} # Make a directory for the project RUN mkdir /app # Change to the `/app` directory WORKDIR /app # Copy the project files over to the container COPY pyproject.toml /app COPY . /app # Chown all the files to the app user RUN chown -R app:app /app # Install Poetry RUN pip3 install poetry # Export the Poetry pack list to another format RUN poetry export -f requirements.txt > requirements.txt # Install the Python dependencies RUN poetry install --only main # Become the `app` user USER app # Expose port 8000 on the container EXPOSE 8000 #CMD ["poetry", "run", "gunicorn"] CMD ["gunicorn"]