# 'dev' or 'release' container build ARG BUILD_TYPE=dev # Use an official Python base image from the Docker Hub FROM python:3.10-slim AS autogpt-base # Install browsers RUN apt-get update && apt-get install -y \ chromium-driver ca-certificates gcc \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Install utilities RUN apt-get update && apt-get install -y \ curl jq wget git \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Set environment variables ENV PIP_NO_CACHE_DIR=yes \ PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ POETRY_HOME="/opt/poetry" \ POETRY_VIRTUALENVS_PATH="/venv" \ POETRY_VIRTUALENVS_IN_PROJECT=0 \ POETRY_NO_INTERACTION=1 # Install and configure Poetry RUN curl -sSL https://install.python-poetry.org | python3 - ENV PATH="$POETRY_HOME/bin:$PATH" RUN poetry config installer.max-workers 10 WORKDIR /app/autogpt COPY autogpt/pyproject.toml autogpt/poetry.lock ./ # Include forge so it can be used as a path dependency COPY forge/ ../forge # Include frontend COPY frontend/ ../frontend # Set the entrypoint ENTRYPOINT ["poetry", "run", "autogpt"] CMD [] # dev build -> include everything FROM autogpt-base as autogpt-dev RUN poetry install --no-cache --no-root \ && rm -rf $(poetry env info --path)/src ONBUILD COPY autogpt/ ./ # release build -> include bare minimum FROM autogpt-base as autogpt-release RUN poetry install --no-cache --no-root --without dev \ && rm -rf $(poetry env info --path)/src ONBUILD COPY autogpt/autogpt/ ./autogpt ONBUILD COPY autogpt/scripts/ ./scripts ONBUILD COPY autogpt/plugins/ ./plugins ONBUILD COPY autogpt/README.md ./README.md ONBUILD RUN mkdir ./data FROM autogpt-${BUILD_TYPE} AS autogpt RUN poetry install --only-root