| # Use an official Python base image from the Docker Hub | |
| FROM python:3.10-slim | |
| # Install git | |
| RUN apt-get -y update | |
| RUN apt-get -y install git chromium-driver | |
| # Install Xvfb and other dependencies for headless browser testing | |
| RUN apt-get update \ | |
| && apt-get install -y wget gnupg2 libgtk-3-0 libdbus-glib-1-2 dbus-x11 xvfb ca-certificates | |
| # Install Firefox / Chromium | |
| RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ | |
| && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \ | |
| && apt-get update \ | |
| && apt-get install -y chromium firefox-esr | |
| # Set environment variables | |
| ENV PIP_NO_CACHE_DIR=yes \ | |
| PYTHONUNBUFFERED=1 \ | |
| PYTHONDONTWRITEBYTECODE=1 | |
| # Create a non-root user and set permissions | |
| RUN useradd --create-home appuser | |
| WORKDIR /home/appuser | |
| RUN chown appuser:appuser /home/appuser | |
| USER appuser | |
| # Copy the requirements.txt file and install the requirements | |
| COPY --chown=appuser:appuser requirements.txt . | |
| RUN sed -i '/Items below this point will not be included in the Docker Image/,$d' requirements.txt && \ | |
| pip install --no-cache-dir --user -r requirements.txt | |
| # Copy the application files | |
| COPY --chown=appuser:appuser autogpt/ ./autogpt | |
| # Set the entrypoint | |
| ENTRYPOINT ["python", "-m", "autogpt"] | |