diff --git a/.dockerignore b/.dockerignore index 9b30efb1db..4bd00d088e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,23 @@ +# NodeJS frontend/node_modules -config.toml -.envrc -.env -.git + +# Configuration (except pyproject.toml) +*.ini +*.toml +!pyproject.toml +*.yml + +# Documentation (except README.md) +*.md +!README.md + +# Hidden files and directories +.* +__pycache__ + +# Unneded files and directories +/dev_config/ +/docs/ +/evaluation/ +/tests/ +CITATION.cff diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 5d76d8fd9f..9f6b9d2d59 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -72,3 +72,9 @@ updates: directory: "/" schedule: interval: "weekly" + + - package-ecosystem: "docker" + directories: + - "containers/*" + schedule: + interval: "weekly" diff --git a/containers/app/Dockerfile b/containers/app/Dockerfile index 70f80aa1e7..59aef9a5d0 100644 --- a/containers/app/Dockerfile +++ b/containers/app/Dockerfile @@ -1,16 +1,16 @@ ARG OPENHANDS_BUILD_VERSION=dev -FROM node:21.7.2-bookworm-slim AS frontend-builder +FROM node:22.16.0-bookworm-slim AS frontend-builder WORKDIR /app -COPY ./frontend/package.json frontend/package-lock.json ./ -RUN npm install -g npm@10.5.1 +COPY frontend/package.json frontend/package-lock.json ./ RUN npm ci -COPY ./frontend ./ +COPY frontend ./ RUN npm run build -FROM python:3.12.3-slim AS backend-builder +FROM python:3.12.10-slim AS base +FROM base AS backend-builder WORKDIR /app ENV PYTHONPATH='/app' @@ -22,17 +22,18 @@ ENV POETRY_NO_INTERACTION=1 \ RUN apt-get update -y \ && apt-get install -y curl make git build-essential \ - && python3 -m pip install poetry==1.8.2 --break-system-packages + && python3 -m pip install poetry --break-system-packages -COPY ./pyproject.toml ./poetry.lock ./ +COPY pyproject.toml poetry.lock ./ RUN touch README.md RUN export POETRY_CACHE_DIR && poetry install --no-root && rm -rf $POETRY_CACHE_DIR -FROM python:3.12.3-slim AS openhands-app +FROM base AS openhands-app WORKDIR /app -ARG OPENHANDS_BUILD_VERSION #re-declare for this section +# re-declare for this section +ARG OPENHANDS_BUILD_VERSION ENV RUN_AS_OPENHANDS=true # A random number--we need this to be different from the user's UID on the host machine @@ -74,12 +75,7 @@ COPY --chown=openhands:app --chmod=770 --from=backend-builder ${VIRTUAL_ENV} ${V COPY --chown=openhands:app --chmod=770 ./microagents ./microagents COPY --chown=openhands:app --chmod=770 ./openhands ./openhands COPY --chown=openhands:app --chmod=777 ./openhands/runtime/plugins ./openhands/runtime/plugins -COPY --chown=openhands:app --chmod=770 ./openhands/agenthub ./openhands/agenthub -COPY --chown=openhands:app ./pyproject.toml ./pyproject.toml -COPY --chown=openhands:app ./poetry.lock ./poetry.lock -COPY --chown=openhands:app ./README.md ./README.md -COPY --chown=openhands:app ./MANIFEST.in ./MANIFEST.in -COPY --chown=openhands:app ./LICENSE ./LICENSE +COPY --chown=openhands:app pyproject.toml poetry.lock README.md MANIFEST.in LICENSE ./ # This is run as "openhands" user, and will create __pycache__ with openhands:openhands ownership RUN python openhands/core/download.py # No-op to download assets