镜像构建历史
# 2026-09-25 23:11:10 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/opt/agent-canvas/entrypoint.sh"]
# 2026-09-25 23:11:10 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-09-25 23:11:10 0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/home/openhands/.openhands /projects]
# 2026-09-25 23:11:10 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-09-25 23:11:10 0.00B 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.15.1 AGENT_SERVER_VERSION=1.49.6 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=7dc6805406ea3c76cb4a3ce407c3c72d481b0ac6 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.24.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.24.0 DEBIAN_SNAPSHOT=20260913T000000Z /bin/sh -c mkdir -p /home/openhands/.openhands/agent-canvas/conversations /home/openhands/.openhands/agent-canvas/bash_events /home/openhands/.openhands/automation /projects && chown -R openhands:openhands /home/openhands/.openhands /projects # buildkit
# 2026-09-25 23:11:10 25.10KB 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.15.1 AGENT_SERVER_VERSION=1.49.6 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=7dc6805406ea3c76cb4a3ce407c3c72d481b0ac6 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.24.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.24.0 DEBIAN_SNAPSHOT=20260913T000000Z /bin/sh -c chmod +x /opt/agent-canvas/entrypoint.sh # buildkit
# 2026-09-25 23:11:10 25.10KB 复制新文件或目录到容器中
COPY docker/entrypoint.sh /opt/agent-canvas/entrypoint.sh # buildkit
# 2026-09-25 23:11:10 460.00B 复制新文件或目录到容器中
COPY /tmp/defaults.env /opt/agent-canvas/defaults.env # buildkit
# 2026-09-25 23:11:10 6.43KB 复制新文件或目录到容器中
COPY tools/ /opt/agent-canvas/tools/ # buildkit
# 2026-09-25 23:11:10 8.56KB 复制新文件或目录到容器中
COPY scripts/runtime-services-info.mjs /opt/agent-canvas/runtime-services-info.mjs # buildkit
# 2026-09-25 23:11:10 7.46KB 复制新文件或目录到容器中
COPY /build/node_modules/totalist /opt/agent-canvas/node_modules/totalist # buildkit
# 2026-09-25 23:11:10 33.01KB 复制新文件或目录到容器中
COPY /build/node_modules/mrmime /opt/agent-canvas/node_modules/mrmime # buildkit
# 2026-09-25 23:11:10 4.82KB 复制新文件或目录到容器中
COPY /build/node_modules/@polka /opt/agent-canvas/node_modules/@polka # buildkit
# 2026-09-25 23:11:10 21.88KB 复制新文件或目录到容器中
COPY /build/node_modules/sirv /opt/agent-canvas/node_modules/sirv # buildkit
# 2026-09-25 23:11:10 59.12KB 复制新文件或目录到容器中
COPY /build/node_modules/httpxy /opt/agent-canvas/node_modules/httpxy # buildkit
# 2026-09-25 23:11:10 8.60KB 复制新文件或目录到容器中
COPY scripts/proxy-utils.mjs /opt/agent-canvas/proxy-utils.mjs # buildkit
# 2026-09-25 23:11:10 28.45KB 复制新文件或目录到容器中
COPY scripts/static-server.mjs /opt/agent-canvas/static-server.mjs # buildkit
# 2026-09-25 23:11:10 8.98MB 复制新文件或目录到容器中
COPY /build/build /opt/agent-canvas/frontend # buildkit
# 2026-09-25 23:11:10 0.00B 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.15.1 AGENT_SERVER_VERSION=1.49.6 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=7dc6805406ea3c76cb4a3ce407c3c72d481b0ac6 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.24.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.24.0 DEBIAN_SNAPSHOT=20260913T000000Z /bin/sh -c if [ -n "${AGENT_SERVER_SDK_GIT_REF}" ]; then BASE_GIT_URL="git+https://github.com/OpenHands/software-agent-sdk@${AGENT_SERVER_SDK_GIT_REF}" && uv pip install --system --force-reinstall "${BASE_GIT_URL}#subdirectory=openhands-sdk" "${BASE_GIT_URL}#subdirectory=openhands-tools" "${BASE_GIT_URL}#subdirectory=openhands-workspace"; fi # buildkit
# 2026-09-25 23:11:10 669.91MB 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.15.1 AGENT_SERVER_VERSION=1.49.6 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=7dc6805406ea3c76cb4a3ce407c3c72d481b0ac6 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.24.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.24.0 DEBIAN_SNAPSHOT=20260913T000000Z /bin/sh -c uv pip install --system "openhands-automation==${AUTOMATION_VERSION}" "openhands-tools==${AGENT_SERVER_VERSION}" 2>/dev/null || pip install --no-cache-dir "openhands-automation==${AUTOMATION_VERSION}" "openhands-tools==${AGENT_SERVER_VERSION}" # buildkit
# 2026-09-25 23:10:46 18.03MB 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.15.1 AGENT_SERVER_VERSION=1.49.6 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=7dc6805406ea3c76cb4a3ce407c3c72d481b0ac6 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.24.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.24.0 DEBIAN_SNAPSHOT=20260913T000000Z /bin/sh -c if command -v apt-get >/dev/null 2>&1; then printf '%s\n' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian/${DEBIAN_SNAPSHOT}/" 'Suites: trixie' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' '' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian-security/${DEBIAN_SNAPSHOT}/" 'Suites: trixie-security' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' > /etc/apt/sources.list.d/debian.sources && apt-get update && apt-get install -y --no-install-recommends libpq-dev && apt-get upgrade -y --no-install-recommends && rm -rf /var/lib/apt/lists/*; fi # buildkit
# 2026-09-25 23:10:46 0.00B 定义构建参数
ARG DEBIAN_SNAPSHOT=20260913T000000Z
# 2026-09-25 23:10:46 0.00B 指定运行容器时使用的用户
USER root
# 2026-09-25 23:10:46 0.00B 设置环境变量 VITE_POSTHOG_API_KEY
ENV VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK
# 2026-09-25 23:10:46 0.00B 设置环境变量 AGENT_CANVAS_BASE_PATH
ENV AGENT_CANVAS_BASE_PATH=/canvas
# 2026-09-25 23:10:46 0.00B 设置环境变量 AGENT_CANVAS_BUILD_GIT_REF
ENV AGENT_CANVAS_BUILD_GIT_REF=refs/tags/v1.24.0
# 2026-09-25 23:10:46 0.00B 设置环境变量 AGENT_CANVAS_BUILD_GIT_SHA
ENV AGENT_CANVAS_BUILD_GIT_SHA=7dc6805406ea3c76cb4a3ce407c3c72d481b0ac6
# 2026-09-25 23:10:46 0.00B 添加元数据标签
LABEL org.opencontainers.image.revision=7dc6805406ea3c76cb4a3ce407c3c72d481b0ac6
# 2026-09-25 23:10:46 0.00B 添加元数据标签
LABEL org.opencontainers.image.version=1.24.0
# 2026-09-25 23:10:46 0.00B 添加元数据标签
LABEL org.opencontainers.image.source=https://github.com/OpenHands/OpenHands
# 2026-09-25 23:10:46 0.00B 添加元数据标签
LABEL org.opencontainers.image.description=All-in-one agent-canvas: Agent Server + Automation + Frontend
# 2026-09-25 23:10:46 0.00B 添加元数据标签
LABEL org.opencontainers.image.title=agent-canvas
# 2026-09-25 23:10:46 0.00B 定义构建参数
ARG AGENT_CANVAS_VERSION=dev
# 2026-09-25 23:10:46 0.00B 定义构建参数
ARG VITE_POSTHOG_API_KEY=
# 2026-09-25 23:10:46 0.00B 定义构建参数
ARG VITE_BASE_PATH=/canvas
# 2026-09-25 23:10:46 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_REF=unknown
# 2026-09-25 23:10:46 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_SHA=unknown
# 2026-09-25 23:10:46 0.00B 定义构建参数
ARG AGENT_SERVER_SDK_GIT_REF=
# 2026-09-25 23:10:46 0.00B 定义构建参数
ARG AGENT_SERVER_VERSION
# 2026-09-25 23:10:46 0.00B 定义构建参数
ARG AUTOMATION_VERSION
# 2026-09-25 21:41:39 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/usr/local/bin/openhands-agent-server"]
# 2026-09-25 21:41:39 0.00B 设置环境变量 LD_LIBRARY_PATH
ENV LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:/usr/lib:/usr/lib/x86_64-linux-gnu:
# 2026-09-25 21:41:39 0.00B 执行命令并创建新的镜像层
RUN |1 USERNAME=openhands /bin/sh -c chmod +x /usr/local/bin/openhands-agent-server # buildkit
# 2026-09-25 21:41:39 113.14MB 复制新文件或目录到容器中
COPY --chown=openhands:openhands /agent-server/dist/openhands-agent-server /usr/local/bin/openhands-agent-server # buildkit
# 2026-09-25 21:39:24 0.00B 定义构建参数
ARG USERNAME
# 2026-09-25 21:39:24 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-09-25 21:39:24 0.00B 设置环境变量 OH_ACP_SKILL_SOURCING
ENV OH_ACP_SKILL_SOURCING=openhands_managed
# 2026-09-25 21:39:24 0.00B 设置环境变量 LOG_JSON
ENV LOG_JSON=true
# 2026-09-25 21:39:24 0.00B 设置工作目录为/
WORKDIR /
# 2026-09-25 21:39:24 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-09-25 21:39:24 685.60MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,browser,*) apt-get update; apt-get install -y --no-install-recommends "$(if grep -q "ubuntu" /etc/os-release; then echo "chromium-browser"; else echo "chromium"; fi)"; apt-get clean; rm -rf /var/lib/apt/lists/*; ;; esac # buildkit
# 2026-09-25 21:38:58 0.00B 设置环境变量 CHROME_BIN PUPPETEER_EXECUTABLE_PATH CHROMIUM_FLAGS
ENV CHROME_BIN=/usr/bin/chromium PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium CHROMIUM_FLAGS=--no-sandbox --disable-dev-shm-usage --disable-gpu
# 2026-09-25 21:38:58 42.68MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; mkdir -p -m 755 /etc/apt/keyrings; wget -nv -O /etc/apt/keyrings/githubcli-archive-keyring.gpg https://cli.github.com/packages/githubcli-archive-keyring.gpg; chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg; echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list; apt-get update; apt-get install -y gh; apt-get clean; rm -rf /var/lib/apt/lists/* # buildkit
# 2026-09-25 21:38:54 408.08MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,docker,*) ;; *) echo "INSTALL_CAPABILITIES excludes docker; skipping Docker Engine"; exit 0;; esac; if grep -q "ubuntu" /etc/os-release; then install -m 0755 -d /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc; chmod a+r /etc/apt/keyrings/docker.asc; echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null; else install -m 0755 -d /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc; chmod a+r /etc/apt/keyrings/docker.asc; echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null; fi; apt-get update; apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; apt-get clean; rm -rf /var/lib/apt/lists/*; mkdir -p /etc/docker; echo '{"mtu": 1450}' > /etc/docker/daemon.json # buildkit
# 2026-09-25 21:38:44 1.15KB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,vscode,*) ;; *) exit 0;; esac; mkdir -p ${OPENVSCODE_SERVER_ROOT}/extensions; cp -r /tmp/vscode_extensions/. ${OPENVSCODE_SERVER_ROOT}/extensions/; chown -R ${USERNAME}:${USERNAME} ${OPENVSCODE_SERVER_ROOT}/extensions # buildkit
# 2026-09-25 21:38:44 243.76MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,vscode,*) ;; *) echo "INSTALL_CAPABILITIES excludes vscode; skipping OpenVSCode Server"; exit 0;; esac; mkdir -p $(dirname ${OPENVSCODE_SERVER_ROOT}); arch=$(uname -m); if [ "${arch}" = "x86_64" ]; then arch="x64"; elif [ "${arch}" = "aarch64" ]; then arch="arm64"; elif [ "${arch}" = "armv7l" ]; then arch="armhf"; fi; wget https://github.com/${RELEASE_ORG}/openvscode-server/releases/download/${RELEASE_TAG}/${RELEASE_TAG}-linux-${arch}.tar.gz; tar -xzf ${RELEASE_TAG}-linux-${arch}.tar.gz; if [ -d "${OPENVSCODE_SERVER_ROOT}" ]; then rm -rf "${OPENVSCODE_SERVER_ROOT}"; fi; mv ${RELEASE_TAG}-linux-${arch} ${OPENVSCODE_SERVER_ROOT}; cp ${OPENVSCODE_SERVER_ROOT}/bin/remote-cli/openvscode-server ${OPENVSCODE_SERVER_ROOT}/bin/remote-cli/code; rm -f ${RELEASE_TAG}-linux-${arch}.tar.gz; chown -R ${USERNAME}:${USERNAME} ${OPENVSCODE_SERVER_ROOT} # buildkit
# 2026-09-25 21:38:40 0.00B 定义构建参数
ARG RELEASE_ORG=gitpod-io
# 2026-09-25 21:38:40 0.00B 定义构建参数
ARG RELEASE_TAG=openvscode-server-v1.109.5
# 2026-09-25 21:38:40 0.00B 设置环境变量 EDITOR VISUAL GIT_EDITOR OPENVSCODE_SERVER_ROOT
ENV EDITOR=code VISUAL=code GIT_EDITOR=code --wait OPENVSCODE_SERVER_ROOT=/openhands/.openvscode-server
# 2026-09-25 21:38:40 0.00B 执行命令并创建新的镜像层
RUN |2 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker /bin/sh -c set -eux; for capability in $(echo "$INSTALL_CAPABILITIES" | tr ',' ' '); do case "$capability" in vscode|browser|docker) ;; *) echo "Unknown capability '$capability' in INSTALL_CAPABILITIES" "(expected one of: vscode, browser, docker)" >&2; exit 1;; esac; done # buildkit
# 2026-09-25 21:38:40 55.19MB 复制新文件或目录到容器中
COPY /uv /uvx /bin/ # buildkit
# 2026-09-25 21:38:40 270.81MB 执行命令并创建新的镜像层
RUN |2 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker /bin/sh -c set -eux; if command -v apt-get >/dev/null 2>&1; then apt-get -o Acquire::Retries=5 update; apt-get -o Acquire::Retries=5 install -y --no-install-recommends apt-transport-https apt-utils build-essential coreutils curl findutils gnupg grep jq lsb-release procps sed sudo tar util-linux wget xz-utils; rm -rf /var/lib/apt/lists/*; elif command -v apk >/dev/null 2>&1; then apk add --no-cache build-base coreutils curl findutils gnupg grep jq procps sudo tar util-linux wget xz; elif command -v microdnf >/dev/null 2>&1; then microdnf install -y coreutils curl findutils gcc gcc-c++ gnupg2 grep jq make procps-ng sed sudo tar util-linux wget xz; microdnf clean all; elif command -v dnf >/dev/null 2>&1; then dnf install -y coreutils curl findutils gcc gcc-c++ gnupg2 grep jq make procps-ng sed sudo tar util-linux wget xz; dnf clean all; elif command -v yum >/dev/null 2>&1; then yum install -y coreutils curl findutils gcc gcc-c++ gnupg2 grep jq make procps-ng sed sudo tar util-linux wget xz; yum clean all; elif command -v zypper >/dev/null 2>&1; then zypper --non-interactive install --no-recommends coreutils curl findutils gcc gcc-c++ gpg2 grep jq make procps sed sudo tar util-linux wget xz; zypper clean --all; fi; usermod -aG sudo "${USERNAME}" 2>/dev/null || true; echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # buildkit
# 2026-09-25 21:38:29 0.00B 指定运行容器时使用的用户
USER root
# 2026-09-25 21:38:29 0.00B 定义构建参数
ARG INSTALL_CAPABILITIES
# 2026-09-25 21:38:29 0.00B 定义构建参数
ARG USERNAME
# 2026-09-25 21:38:29 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-09-25 21:38:29 0.00B 设置环境变量 OH_ACP_SKILL_SOURCING
ENV OH_ACP_SKILL_SOURCING=openhands_managed
# 2026-09-25 21:38:29 0.00B 设置环境变量 LOG_JSON
ENV LOG_JSON=true
# 2026-09-25 21:38:29 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-09-25 21:38:29 0.00B 设置环境变量 LC_ALL
ENV LC_ALL=C.UTF-8
# 2026-09-25 21:38:29 0.00B 设置工作目录为/
WORKDIR /
# 2026-09-25 21:38:29 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-09-25 21:38:29 49.00B 执行命令并创建新的镜像层
RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=fcc102a697874d54a357e36004e02c95040dbdc0 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.49.6 /bin/sh -c mkdir -p /etc/claude-code && echo '{"permissions":{"allow":["Edit","Read","Bash"]}}' > /etc/claude-code/managed-settings.json # buildkit
# 2026-09-25 21:38:29 0.00B 执行命令并创建新的镜像层
RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=fcc102a697874d54a357e36004e02c95040dbdc0 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.49.6 /bin/sh -c if ! "$ACP_NODE_DIR/bin/node" --version >/dev/null 2>&1; then echo "Warning: ACP Node 22 runtime is not compatible with this base image (likely older glibc or musl libc); ACP agents will not be available" >&2; if [ -f "$ACP_NODE_DIR/acp-wrappers.txt" ]; then while read -r bin; do rm -f "/usr/local/bin/$bin"; done < "$ACP_NODE_DIR/acp-wrappers.txt"; fi; rm -rf "$ACP_NODE_DIR"/*; fi # buildkit
# 2026-09-25 21:38:29 223.00B 复制新文件或目录到容器中
COPY /opt/acp-wrappers/. /usr/local/bin/ # buildkit
# 2026-09-25 21:38:29 1.02GB 复制新文件或目录到容器中
COPY /acp-node /acp-node # buildkit
# 2026-09-25 21:38:06 0.00B 设置环境变量 ACP_NODE_DIR
ENV ACP_NODE_DIR=/acp-node
# 2026-09-25 21:38:06 101.27MB 执行命令并创建新的镜像层
RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=fcc102a697874d54a357e36004e02c95040dbdc0 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.49.6 /bin/sh -c set -eux; if command -v apt-get >/dev/null 2>&1; then apt-get -o Acquire::Retries=5 update; apt-get -o Acquire::Retries=5 install -y --no-install-recommends bash ca-certificates git tini tmux; rm -rf /var/lib/apt/lists/*; elif command -v apk >/dev/null 2>&1; then apk add --no-cache bash ca-certificates git shadow tini tmux; elif command -v microdnf >/dev/null 2>&1; then microdnf install -y bash ca-certificates curl git shadow-utils tmux; microdnf clean all; elif command -v dnf >/dev/null 2>&1; then dnf install -y bash ca-certificates curl git shadow-utils tmux; dnf clean all; elif command -v yum >/dev/null 2>&1; then yum install -y bash ca-certificates curl git shadow-utils tmux; yum clean all; elif command -v zypper >/dev/null 2>&1; then zypper --non-interactive install --no-recommends bash ca-certificates curl git shadow tmux; zypper clean --all; else echo "Unsupported base image: no known package manager found" >&2; exit 1; fi; if ! command -v tini >/dev/null 2>&1; then ARCH=$(uname -m); case "$ARCH" in x86_64|amd64) TARCH=amd64; TINI_SHA256=c5b0666b4cb676901f90dfcb37106783c5fe2077b04590973b885950611b30ee;; aarch64|arm64) TARCH=arm64; TINI_SHA256=eae1d3aa50c48fb23b8cbdf4e369d0910dfc538566bfd09df89a774aa84a48b9;; *) echo "Unsupported architecture for tini: '$ARCH'" >&2; exit 1;; esac; curl -fsSL --retry 5 --retry-delay 2 --retry-connrefused "https://github.com/krallin/tini/releases/download/v0.19.0/tini-static-${TARCH}" -o /usr/local/bin/tini; echo "$TINI_SHA256 /usr/local/bin/tini" | sha256sum -c -; chmod 755 /usr/local/bin/tini; fi; tini --version; grep -Eq "^[^:]*:[^:]*:${GID}:" /etc/group || groupadd -g "${GID}" "${USERNAME}"; grep -Eq "^${USERNAME}:" /etc/passwd || useradd -m -u "${UID}" -g "${GID}" -s /bin/bash "${USERNAME}"; mkdir -p /workspace/project; chown -R "${USERNAME}:${USERNAME}" /workspace # buildkit
# 2026-09-25 21:37:55 0.00B 设置环境变量 OPENHANDS_BUILD_GIT_REF
ENV OPENHANDS_BUILD_GIT_REF=refs/tags/v1.49.6
# 2026-09-25 21:37:55 0.00B 设置环境变量 OPENHANDS_BUILD_GIT_SHA
ENV OPENHANDS_BUILD_GIT_SHA=fcc102a697874d54a357e36004e02c95040dbdc0
# 2026-09-25 21:37:55 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_REF=unknown
# 2026-09-25 21:37:55 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_SHA=unknown
# 2026-09-25 21:37:55 0.00B 定义构建参数
ARG USERNAME UID GID PORT
# 2026-09-25 21:37:55 4.62MB 执行命令并创建新的镜像层
RUN |2 NPM_VERSION=11.19.1 DEBIAN_SNAPSHOT=20260920T000000Z /bin/sh -c set -eux; ln -sfn ../lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm; ln -sfn ../lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx; ln -sfn ../lib/node_modules/corepack/dist/corepack.js /usr/local/bin/corepack; printf '%s\n' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian/${DEBIAN_SNAPSHOT}/" 'Suites: trixie' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' '' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian-security/${DEBIAN_SNAPSHOT}/" 'Suites: trixie-security' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' > /etc/apt/sources.list.d/debian.sources; apt-get update; apt-get upgrade -y; apt-get install -y --no-install-recommends ca-certificates libbz2-1.0 libdb5.3t64 libffi8 libgcc-s1 libgdbm6t64 liblzma5 libncursesw6 libreadline8t64 libsqlite3-0 libssl3t64 libstdc++6 libtinfo6 libuuid1 libzstd1 netbase tzdata zlib1g; rm -rf /var/lib/apt/lists/*; python3 --version; node --version; npm --version # buildkit
# 2026-09-25 21:37:43 44.75MB 执行命令并创建新的镜像层
RUN |2 NPM_VERSION=11.19.1 DEBIAN_SNAPSHOT=20260920T000000Z /bin/sh -c node /usr/local/lib/node_modules/npm/bin/npm-cli.js install --global "npm@${NPM_VERSION}" # buildkit
# 2026-09-25 21:37:38 12.79MB 复制新文件或目录到容器中
COPY /usr/local/lib/node_modules /usr/local/lib/node_modules # buildkit
# 2026-09-25 21:37:37 126.60MB 复制新文件或目录到容器中
COPY /usr/local/bin/node /usr/local/bin/node # buildkit
# 2026-09-25 21:37:37 32.36MB 复制新文件或目录到容器中
COPY /usr/local /usr/local # buildkit
# 2026-09-25 21:37:37 0.00B 定义构建参数
ARG DEBIAN_SNAPSHOT=20260920T000000Z
# 2026-09-25 21:37:37 0.00B 定义构建参数
ARG NPM_VERSION
# 2026-09-18 08:00:00 78.81MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1789689600'
镜像信息
{
"Id": "sha256:9bdd80ab97a1abb3c69c37ac96af5e565fdb2074c72014a90edbacc91788fa97",
"RepoTags": [
"ghcr.io/openhands/agent-canvas:1.24.0",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openhands/agent-canvas:1.24.0"
],
"RepoDigests": [
"ghcr.io/openhands/agent-canvas@sha256:ad0829a7082a71ddfd2d16c1fae5a2172e4ca5a34eba7f03b69bd5b9b1bc54d7",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openhands/agent-canvas@sha256:243eab7b202ba7aab662af4d5dfbb54281bea8b1cf00ff61b9488b7f6f06bf16"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-09-25T15:11:10.631756294Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "openhands",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"OPENHANDS_BUILD_GIT_SHA=fcc102a697874d54a357e36004e02c95040dbdc0",
"OPENHANDS_BUILD_GIT_REF=refs/tags/v1.49.6",
"ACP_NODE_DIR=/acp-node",
"LC_ALL=C.UTF-8",
"LANG=C.UTF-8",
"LOG_JSON=true",
"OH_ACP_SKILL_SOURCING=openhands_managed",
"EDITOR=code",
"VISUAL=code",
"GIT_EDITOR=code --wait",
"OPENVSCODE_SERVER_ROOT=/openhands/.openvscode-server",
"CHROME_BIN=/usr/bin/chromium",
"PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium",
"CHROMIUM_FLAGS=--no-sandbox --disable-dev-shm-usage --disable-gpu",
"LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:/usr/lib:/usr/lib/x86_64-linux-gnu:",
"AGENT_CANVAS_BUILD_GIT_SHA=7dc6805406ea3c76cb4a3ce407c3c72d481b0ac6",
"AGENT_CANVAS_BUILD_GIT_REF=refs/tags/v1.24.0",
"AGENT_CANVAS_BASE_PATH=/canvas",
"VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK"
],
"Cmd": null,
"Image": "",
"Volumes": {
"/home/openhands/.openhands": {},
"/projects": {}
},
"WorkingDir": "/",
"Entrypoint": [
"tini",
"--",
"/opt/agent-canvas/entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"org.opencontainers.image.description": "All-in-one agent-canvas: Agent Server + Automation + Frontend",
"org.opencontainers.image.revision": "7dc6805406ea3c76cb4a3ce407c3c72d481b0ac6",
"org.opencontainers.image.source": "https://github.com/OpenHands/OpenHands",
"org.opencontainers.image.title": "agent-canvas",
"org.opencontainers.image.version": "1.24.0"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 3938404781,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/78fdba8bc569170c0df38dd58bed00f09680918210d5c234f14f7fbf4c73a719/diff:/var/lib/docker/overlay2/c05e8c6aad0a1875579183a1b669a036b39ec2cc660a0f5414e03dd395dc5d74/diff:/var/lib/docker/overlay2/b994db68f68264d129f8d5da1974bd0e3d656cc93a57f52f39185472bc895e4a/diff:/var/lib/docker/overlay2/13bfaef4424e4b786d30817db6b1c270346c592ed9b4053c228122e21f1af595/diff:/var/lib/docker/overlay2/8d6ddb6596cd53048b1730cb09d77a11aac9510694f46cef25aaeb01b045ff93/diff:/var/lib/docker/overlay2/dfeeec15905650d45a6418b899a872e15f6cddaa5ddd9da052fccfec5f6607fa/diff:/var/lib/docker/overlay2/edad56a596bdbd11702d4371483968209b441aa651f7985d538a1f90d15d592c/diff:/var/lib/docker/overlay2/cdd9fdf2795c7190db83c0e4c26b9af762746ee35c97a6c4dfb0c96ec3ab20f1/diff:/var/lib/docker/overlay2/60b176f29df1d798f798641d9e75e93708945d6485139e4433076a8e8c062524/diff:/var/lib/docker/overlay2/8d21cf8c983c00b0c2460056ea4a814567d5f21e786034106d3454879bf17479/diff:/var/lib/docker/overlay2/10de3374682a6ec395ac0ecbdc5518ea4f996afa4f9639a54b9ec36ab3ba7d1b/diff:/var/lib/docker/overlay2/96f764d15916588af8d1a4dddff01043bfa97410f1b4956de3a67f96b05a8d4f/diff:/var/lib/docker/overlay2/91d3a81eca8d7d475b13a4660f53b20dbbe01c21125d9c53f6f9be2dc6ab8339/diff:/var/lib/docker/overlay2/bdd14e9300a138456c285445b956389a1f445ec968792d079591a591cd99b397/diff:/var/lib/docker/overlay2/4a56eb6c85a3eb1902987ef9b86da64a73aacb5f17a9f4a90c009cd5a7c8e5de/diff:/var/lib/docker/overlay2/b399dc21dab18e5138d1fda5fae5d737cde4a7a8ad7b2d3deda3346c3d4a82e7/diff:/var/lib/docker/overlay2/1d49d2f6669b17db4b60c28db45ed9d7a69ca5029f966425086ea46cacb0d637/diff:/var/lib/docker/overlay2/3ededfb70e1b686ca5d4de2d1b3e6423a024a3f9f0246ee7f63e8625564fbb62/diff:/var/lib/docker/overlay2/0d615d084d42583476dceb3e9b5649a1efeca3c5a39f8dae28554c28f1e0cd66/diff:/var/lib/docker/overlay2/ae22d6899a177de346d511a67b889e1381a78e71815643a5a8beff664e3cf3a9/diff:/var/lib/docker/overlay2/bbd6e12217f81fecd0d13824a65b1025e69f459488325e9bdc33501289727533/diff:/var/lib/docker/overlay2/48033665a61ffc8ae1a2d6aafd92a8892a8cf09999b5584078615f83b0104d32/diff:/var/lib/docker/overlay2/33cd2866e25f474c7553fa96d24d47bfd04e9da51d8fef95c56c2a02e80440c8/diff:/var/lib/docker/overlay2/323a7739aa63efaf721d7af207f7901e2e8d1707a20f4060639e1a4399efb20f/diff:/var/lib/docker/overlay2/f872cba16188cc1e4bbd7b87eebb4c6dbbbf50718b60c891e663ae006c8cddc2/diff:/var/lib/docker/overlay2/685633061ab9a0c45d951b81d1d26ba93984190522c33d94ce3809d36616b9f6/diff:/var/lib/docker/overlay2/57d1ba154c95fe3f96c15bcb6e1c24ca0282d08dbddf52ccd7c801622e8980f0/diff:/var/lib/docker/overlay2/45281d8ea17caa58b7ae805825cb70c71c47b7a7098f1ca8bfb03f5746441c15/diff:/var/lib/docker/overlay2/9d5da3071707ada6865e579ce32b77b35787ecc5ed9a959e7bcefcaa9985ca4b/diff:/var/lib/docker/overlay2/36d5504b8de422379e1f9a06dd8cac16021a7251dfb7bab1f64dd8f1f80a4a6d/diff:/var/lib/docker/overlay2/474d946aee330e51630251fc2ab3ed98b6ec8d0c9c0657a632bb0c25b4958ca2/diff:/var/lib/docker/overlay2/e153324a495f29d96c2c23022243f6428c94d474ab327790c946b443524a51ab/diff:/var/lib/docker/overlay2/11cf58ae7ae1f8e5f3c3cd061e591334e3db03c8f2d72a2f7bae682e523f8b57/diff:/var/lib/docker/overlay2/df202f9fe9aeaad994a4ce0ad833bebf185eb135cd36146837c96dee4789c2e2/diff:/var/lib/docker/overlay2/3124dc46f3dc0588cd42e639fcc828bb5ab13d2995aae5a8452c36eac7592433/diff:/var/lib/docker/overlay2/03784cccc05cedf23a9698c5e14b6c9f42ec964225c962f37ef7fe92de037480/diff:/var/lib/docker/overlay2/0a54ab216a0bfe377756c5ffaeb38009fe74e9c0fd29729892c12e08f9ef4057/diff",
"MergedDir": "/var/lib/docker/overlay2/c3fb93582dff3cdf678faf27d66b2483136350bc2e7f1af8bb096bdf4bb3ed10/merged",
"UpperDir": "/var/lib/docker/overlay2/c3fb93582dff3cdf678faf27d66b2483136350bc2e7f1af8bb096bdf4bb3ed10/diff",
"WorkDir": "/var/lib/docker/overlay2/c3fb93582dff3cdf678faf27d66b2483136350bc2e7f1af8bb096bdf4bb3ed10/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:a6dc765193a52cbaede3c93a9ff48b9540948dd0774bbe7031fcb5847606f9ac",
"sha256:93599266bc4cb5605791a51a366d84285ddb00d5b8953f83729830903d6fefa5",
"sha256:fc2ec34dfbff3120b7e3f7c2959cdd1e9c3dec73a608803953d562a548bf06c1",
"sha256:e56afcce7b3c3c7e37258328f33171b22cf0ab08c8ad9d31c59fef8facffec80",
"sha256:6704ccf51cd02e597c90394ee7f4ec5cf80aa63db0645fbed8c19ab8c7f37c4a",
"sha256:912bd352b1c6fa5219df8b27909eb56664ccad4b81f2df6a4084f57c3729f73f",
"sha256:2d4ec19e6256086cb2e025135527a5cdfdc224fd75a5d838a7a046c1524a6179",
"sha256:b35af5b24c3fc88ccbf06bc8e9c253a5a58d6080919416fd928fe5899ecad4fb",
"sha256:838b559be3cb3147526231a6d8ff6d70fed6f9bc22693f2b86423f3b5e4f8fee",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:a5ac18d36492b9a906270eef62dd4396e9f27cc24c051f135a19f36078cf3643",
"sha256:c0ef59d8e38a01a4514b6ede569b884e8e6d05057c6b088753938c2c74fa05bc",
"sha256:dae5af7454e329d9ee2c2031cba0e72ffe9a8248d94832758a4983679b630f2a",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:34cae4fafe9a718f960f09f21586a0e0327a9ca1b23eb8adf6c910e23eba8532",
"sha256:2dfa3dc0ee4d6a64775a9aceaa081a8469f066d4b6276f605efb05e90aad37ba",
"sha256:6de02e33e9b87f8408f405f94a83bcb5a87ae44477aefe2a1667e2fac63d512e",
"sha256:74d6d563d4ef68f5bb56317a6be6de21efdfdb80341acb65572ed848302f00cf",
"sha256:48a61813e79e9f538b353aa0ca58eeb1aa984832e71987b0eab2e25d3bcf7737",
"sha256:7f38e1ce596d441624b4eb539f5d7fe996fc56adc884ecf8a5bcc051ef60ce24",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:62991aaf54982813a0076619154e82a0c8ec4b64da9b6f725e026acbe0b6ab47",
"sha256:1c5ee56dc50fd1b74d49624acce01d01f287bf94f84150481c131d1e93095b24",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:bf6174227f0444cc84882acad3bdc9bb526c78bfa0e59e0df33f26d2e23ba3e9",
"sha256:9de9c1194c4cc9d396e1304f2840c85e8d24c4e80616ab7eeab63c41c8359f21",
"sha256:ff0873727722adeacd3fd0aabcbc05bc05ff12102475a508a03f68f4a90ff549",
"sha256:0b127fc29615e2aff293b1574e9d49dff066edb3c29038322d6318af04b43853",
"sha256:e8874d345ebcdaa13024660c6c80465f028da376d35b53c4c8ae32e8599150ca",
"sha256:81df8434107dde06411892ca080406711edc0e800d4976a0bfc3256eec7d589c",
"sha256:f0318032a155dbd6ee9c02af5d3bf92f2610bdc77b427841d7ec56f93fef54b1",
"sha256:298be26677b5914460da0bcfdd96979d4a1c1ebf37c25765fdf683ea3589da12",
"sha256:e1800f78a940b6a90d23bdf07620323d6b55bc7bc20e50fd1f2c53170a71d862",
"sha256:7c287955c224dbb0df43cbe4387c386894e0791051a137afc3cb67fff56a5075",
"sha256:29365fe207e43b2648d93b75cdf14afd8099863c86adfea580833e9a40e09a7e",
"sha256:0cf71ab976bae5fd3ac2362b924afb2777e462c3ae25bd38b24d98ba8cd95d7b",
"sha256:8c71aa3748e1a2dc216be840422bd749470067102b2023b139d05e4f7fd65c3f",
"sha256:3e0a8b11720d7cd9bee2f52e946ab0d807c42a702c47fd32b44aa14be4f6c252"
]
},
"Metadata": {
"LastTagTime": "2026-09-29T15:41:53.450183401+08:00"
}
}