Dockerfile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. ARG OPEN_DEVIN_BUILD_VERSION=dev
  2. FROM node:21.7.2-bookworm-slim as frontend-builder
  3. WORKDIR /app
  4. COPY ./frontend/package.json frontend/package-lock.json ./
  5. RUN npm install -g npm@10.5.1
  6. RUN npm install
  7. COPY ./frontend ./
  8. RUN npm run make-i18n && npm run build
  9. FROM python:3.12-slim as backend-builder
  10. WORKDIR /app
  11. ENV PYTHONPATH '/app'
  12. ENV POETRY_NO_INTERACTION=1 \
  13. POETRY_VIRTUALENVS_IN_PROJECT=1 \
  14. POETRY_VIRTUALENVS_CREATE=1 \
  15. POETRY_CACHE_DIR=/tmp/poetry_cache
  16. RUN apt-get update -y \
  17. && apt-get install -y curl make git build-essential \
  18. && python3 -m pip install poetry==1.8.2 --break-system-packages
  19. COPY ./pyproject.toml ./poetry.lock ./
  20. RUN touch README.md
  21. RUN poetry install --without evaluation --no-root && rm -rf $POETRY_CACHE_DIR
  22. FROM python:3.12-slim as runtime
  23. WORKDIR /app
  24. ENV RUN_AS_DEVIN=false
  25. ENV USE_HOST_NETWORK=true
  26. ENV SSH_HOSTNAME=host.docker.internal
  27. ENV WORKSPACE_BASE=/opt/workspace_base
  28. ENV OPEN_DEVIN_BUILD_VERSION=$OPEN_DEVIN_BUILD_VERSION
  29. RUN mkdir -p $WORKSPACE_BASE
  30. RUN apt-get update -y \
  31. && apt-get install -y curl ssh
  32. ENV VIRTUAL_ENV=/app/.venv \
  33. PATH="/app/.venv/bin:$PATH" \
  34. PYTHONPATH='/app'
  35. COPY --from=backend-builder ${VIRTUAL_ENV} ${VIRTUAL_ENV}
  36. COPY ./opendevin ./opendevin
  37. COPY ./agenthub ./agenthub
  38. RUN python opendevin/download.py # No-op to download assets
  39. RUN playwright install --with-deps chromium
  40. COPY --from=frontend-builder /app/dist ./frontend/dist
  41. CMD ["uvicorn", "opendevin.server.listen:app", "--host", "0.0.0.0", "--port", "3000"]