镜像构建历史
# 2026-09-17 03:25:40 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/opt/agent-canvas/entrypoint.sh"]
# 2026-09-17 03:25:40 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-09-17 03:25:40 0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/home/openhands/.openhands /projects]
# 2026-09-17 03:25:40 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-09-17 03:25:40 0.00B 执行命令并创建新的镜像层
RUN |7 AUTOMATION_VERSION=1.12.1 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=f2b0aacda17fc60ea2ea45cfdd2323c12b034b7d OPENHANDS_BUILD_GIT_REF=refs/tags/v1.19.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.19.0 /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-17 03:25:40 24.88KB 执行命令并创建新的镜像层
RUN |7 AUTOMATION_VERSION=1.12.1 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=f2b0aacda17fc60ea2ea45cfdd2323c12b034b7d OPENHANDS_BUILD_GIT_REF=refs/tags/v1.19.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.19.0 /bin/sh -c chmod +x /opt/agent-canvas/entrypoint.sh # buildkit
# 2026-09-17 03:25:40 24.88KB 复制新文件或目录到容器中
COPY docker/entrypoint.sh /opt/agent-canvas/entrypoint.sh # buildkit
# 2026-09-17 03:25:40 460.00B 复制新文件或目录到容器中
COPY /tmp/defaults.env /opt/agent-canvas/defaults.env # buildkit
# 2026-09-17 03:25:40 6.43KB 复制新文件或目录到容器中
COPY tools/ /opt/agent-canvas/tools/ # buildkit
# 2026-09-17 03:25:40 8.56KB 复制新文件或目录到容器中
COPY scripts/runtime-services-info.mjs /opt/agent-canvas/runtime-services-info.mjs # buildkit
# 2026-09-17 03:25:40 7.46KB 复制新文件或目录到容器中
COPY /build/node_modules/totalist /opt/agent-canvas/node_modules/totalist # buildkit
# 2026-09-17 03:25:40 33.01KB 复制新文件或目录到容器中
COPY /build/node_modules/mrmime /opt/agent-canvas/node_modules/mrmime # buildkit
# 2026-09-17 03:25:40 4.82KB 复制新文件或目录到容器中
COPY /build/node_modules/@polka /opt/agent-canvas/node_modules/@polka # buildkit
# 2026-09-17 03:25:40 21.88KB 复制新文件或目录到容器中
COPY /build/node_modules/sirv /opt/agent-canvas/node_modules/sirv # buildkit
# 2026-09-17 03:25:40 59.12KB 复制新文件或目录到容器中
COPY /build/node_modules/httpxy /opt/agent-canvas/node_modules/httpxy # buildkit
# 2026-09-17 03:25:40 8.60KB 复制新文件或目录到容器中
COPY scripts/proxy-utils.mjs /opt/agent-canvas/proxy-utils.mjs # buildkit
# 2026-09-17 03:25:40 28.37KB 复制新文件或目录到容器中
COPY scripts/static-server.mjs /opt/agent-canvas/static-server.mjs # buildkit
# 2026-09-17 03:25:40 8.68MB 复制新文件或目录到容器中
COPY /build/build /opt/agent-canvas/frontend # buildkit
# 2026-09-17 03:25:40 0.00B 执行命令并创建新的镜像层
RUN |7 AUTOMATION_VERSION=1.12.1 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=f2b0aacda17fc60ea2ea45cfdd2323c12b034b7d OPENHANDS_BUILD_GIT_REF=refs/tags/v1.19.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.19.0 /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-17 03:25:40 421.14MB 执行命令并创建新的镜像层
RUN |7 AUTOMATION_VERSION=1.12.1 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=f2b0aacda17fc60ea2ea45cfdd2323c12b034b7d OPENHANDS_BUILD_GIT_REF=refs/tags/v1.19.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.19.0 /bin/sh -c uv pip install --system "openhands-automation==${AUTOMATION_VERSION}" 2>/dev/null || pip install --no-cache-dir "openhands-automation==${AUTOMATION_VERSION}" # buildkit
# 2026-09-17 03:25:34 18.06MB 执行命令并创建新的镜像层
RUN |7 AUTOMATION_VERSION=1.12.1 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=f2b0aacda17fc60ea2ea45cfdd2323c12b034b7d OPENHANDS_BUILD_GIT_REF=refs/tags/v1.19.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.19.0 /bin/sh -c if command -v apt-get >/dev/null 2>&1; then apt-get update && apt-get install -y --no-install-recommends libpq-dev && rm -rf /var/lib/apt/lists/*; fi # buildkit
# 2026-09-17 03:25:34 0.00B 指定运行容器时使用的用户
USER root
# 2026-09-17 03:25:34 0.00B 设置环境变量 VITE_POSTHOG_API_KEY
ENV VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK
# 2026-09-17 03:25:34 0.00B 设置环境变量 AGENT_CANVAS_BASE_PATH
ENV AGENT_CANVAS_BASE_PATH=/canvas
# 2026-09-17 03:25:34 0.00B 设置环境变量 AGENT_CANVAS_BUILD_GIT_REF
ENV AGENT_CANVAS_BUILD_GIT_REF=refs/tags/v1.19.0
# 2026-09-17 03:25:34 0.00B 设置环境变量 AGENT_CANVAS_BUILD_GIT_SHA
ENV AGENT_CANVAS_BUILD_GIT_SHA=f2b0aacda17fc60ea2ea45cfdd2323c12b034b7d
# 2026-09-17 03:25:34 0.00B 添加元数据标签
LABEL org.opencontainers.image.revision=f2b0aacda17fc60ea2ea45cfdd2323c12b034b7d
# 2026-09-17 03:25:34 0.00B 添加元数据标签
LABEL org.opencontainers.image.version=1.19.0
# 2026-09-17 03:25:34 0.00B 添加元数据标签
LABEL org.opencontainers.image.source=https://github.com/OpenHands/OpenHands
# 2026-09-17 03:25:34 0.00B 添加元数据标签
LABEL org.opencontainers.image.description=All-in-one agent-canvas: Agent Server + Automation + Frontend
# 2026-09-17 03:25:34 0.00B 添加元数据标签
LABEL org.opencontainers.image.title=agent-canvas
# 2026-09-17 03:25:34 0.00B 定义构建参数
ARG AGENT_CANVAS_VERSION=dev
# 2026-09-17 03:25:34 0.00B 定义构建参数
ARG VITE_POSTHOG_API_KEY=
# 2026-09-17 03:25:34 0.00B 定义构建参数
ARG VITE_BASE_PATH=/canvas
# 2026-09-17 03:25:34 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_REF=unknown
# 2026-09-17 03:25:34 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_SHA=unknown
# 2026-09-17 03:25:34 0.00B 定义构建参数
ARG AGENT_SERVER_SDK_GIT_REF=
# 2026-09-17 03:25:34 0.00B 定义构建参数
ARG AUTOMATION_VERSION
# 2026-09-16 05:03:14 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/usr/local/bin/openhands-agent-server"]
# 2026-09-16 05:03:14 0.00B 设置环境变量 LD_LIBRARY_PATH
ENV LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:/usr/lib:/usr/lib/x86_64-linux-gnu:
# 2026-09-16 05:03:14 0.00B 执行命令并创建新的镜像层
RUN |1 USERNAME=openhands /bin/sh -c chmod +x /usr/local/bin/openhands-agent-server # buildkit
# 2026-09-16 05:03:13 113.04MB 复制新文件或目录到容器中
COPY --chown=openhands:openhands /agent-server/dist/openhands-agent-server /usr/local/bin/openhands-agent-server # buildkit
# 2026-09-16 05:00:47 0.00B 定义构建参数
ARG USERNAME
# 2026-09-16 05:00:47 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-09-16 05:00:47 0.00B 设置环境变量 OH_ACP_SKILL_SOURCING
ENV OH_ACP_SKILL_SOURCING=openhands_managed
# 2026-09-16 05:00:47 0.00B 设置环境变量 LOG_JSON
ENV LOG_JSON=true
# 2026-09-16 05:00:47 0.00B 设置工作目录为/
WORKDIR /
# 2026-09-16 05:00:47 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-09-16 05:00:47 681.86MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.98.2 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-16 05:00:27 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-16 05:00:27 42.70MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.98.2 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-16 05:00:23 408.11MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.98.2 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-16 05:00:13 1.15KB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.98.2 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-16 05:00:12 190.33MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.98.2 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-16 05:00:09 0.00B 定义构建参数
ARG RELEASE_ORG=gitpod-io
# 2026-09-16 05:00:09 0.00B 定义构建参数
ARG RELEASE_TAG=openvscode-server-v1.98.2
# 2026-09-16 05:00:09 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-16 05:00:09 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-16 05:00:09 58.39MB 复制新文件或目录到容器中
COPY /uv /uvx /bin/ # buildkit
# 2026-09-16 05:00:09 270.83MB 执行命令并创建新的镜像层
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-16 04:59:56 0.00B 指定运行容器时使用的用户
USER root
# 2026-09-16 04:59:56 0.00B 定义构建参数
ARG INSTALL_CAPABILITIES
# 2026-09-16 04:59:56 0.00B 定义构建参数
ARG USERNAME
# 2026-09-16 04:59:56 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-09-16 04:59:56 0.00B 设置环境变量 OH_ACP_SKILL_SOURCING
ENV OH_ACP_SKILL_SOURCING=openhands_managed
# 2026-09-16 04:59:56 0.00B 设置环境变量 LOG_JSON
ENV LOG_JSON=true
# 2026-09-16 04:59:56 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-09-16 04:59:56 0.00B 设置环境变量 LC_ALL
ENV LC_ALL=C.UTF-8
# 2026-09-16 04:59:56 0.00B 设置工作目录为/
WORKDIR /
# 2026-09-16 04:59:56 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-09-16 04:59:56 49.00B 执行命令并创建新的镜像层
RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=481dfb3d7adf6355fc157390d293559092739089 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.48.0 /bin/sh -c mkdir -p /etc/claude-code && echo '{"permissions":{"allow":["Edit","Read","Bash"]}}' > /etc/claude-code/managed-settings.json # buildkit
# 2026-09-16 04:59:56 0.00B 执行命令并创建新的镜像层
RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=481dfb3d7adf6355fc157390d293559092739089 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.48.0 /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-16 04:59:56 223.00B 复制新文件或目录到容器中
COPY /opt/acp-wrappers/. /usr/local/bin/ # buildkit
# 2026-09-16 04:59:56 1.01GB 复制新文件或目录到容器中
COPY /acp-node /acp-node # buildkit
# 2026-09-16 04:59:45 0.00B 设置环境变量 ACP_NODE_DIR
ENV ACP_NODE_DIR=/acp-node
# 2026-09-16 04:59:45 101.26MB 执行命令并创建新的镜像层
RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=481dfb3d7adf6355fc157390d293559092739089 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.48.0 /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 git shadow-utils tmux; microdnf clean all; elif command -v dnf >/dev/null 2>&1; then dnf install -y bash ca-certificates git shadow-utils tmux; dnf clean all; elif command -v yum >/dev/null 2>&1; then yum install -y bash ca-certificates 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 git shadow tmux; zypper clean --all; else echo "Unsupported base image: no known package manager found" >&2; exit 1; fi; 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-16 04:59:32 0.00B 设置环境变量 OPENHANDS_BUILD_GIT_REF
ENV OPENHANDS_BUILD_GIT_REF=refs/tags/v1.48.0
# 2026-09-16 04:59:32 0.00B 设置环境变量 OPENHANDS_BUILD_GIT_SHA
ENV OPENHANDS_BUILD_GIT_SHA=481dfb3d7adf6355fc157390d293559092739089
# 2026-09-16 04:59:32 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_REF=unknown
# 2026-09-16 04:59:32 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_SHA=unknown
# 2026-09-16 04:59:32 0.00B 定义构建参数
ARG USERNAME UID GID PORT
# 2026-09-16 04:59:32 41.11MB 执行命令并创建新的镜像层
RUN |1 DEBIAN_SNAPSHOT=20260913T000000Z /bin/sh -c set -eux; ln -s ../lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm; ln -s ../lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx; ln -s ../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-16 04:59:12 12.79MB 复制新文件或目录到容器中
COPY /usr/local/lib/node_modules /usr/local/lib/node_modules # buildkit
# 2026-09-16 04:59:12 126.60MB 复制新文件或目录到容器中
COPY /usr/local/bin/node /usr/local/bin/node # buildkit
# 2026-09-16 04:59:11 32.36MB 复制新文件或目录到容器中
COPY /usr/local /usr/local # buildkit
# 2026-09-16 04:59:11 0.00B 定义构建参数
ARG DEBIAN_SNAPSHOT=20260913T000000Z
# 2026-08-24 08:00:00 78.64MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1787529600'
镜像信息
{
"Id": "sha256:5e5a07aae41750f90530c3e3a47cfe50f848913ab59df31af7ddab7642f62357",
"RepoTags": [
"ghcr.io/openhands/agent-canvas:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openhands/agent-canvas:latest"
],
"RepoDigests": [
"ghcr.io/openhands/agent-canvas@sha256:7297294fab096329a2246f06da14e8e7cc1ec85dec17d1887cc18745cf059086",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openhands/agent-canvas@sha256:6731b349d09e90edf3af19c807b1d735f19d73190b1add9a70dd1d6c6197b46f"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-09-16T19:25:40.89671549Z",
"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=481dfb3d7adf6355fc157390d293559092739089",
"OPENHANDS_BUILD_GIT_REF=refs/tags/v1.48.0",
"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=f2b0aacda17fc60ea2ea45cfdd2323c12b034b7d",
"AGENT_CANVAS_BUILD_GIT_REF=refs/tags/v1.19.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": "f2b0aacda17fc60ea2ea45cfdd2323c12b034b7d",
"org.opencontainers.image.source": "https://github.com/OpenHands/OpenHands",
"org.opencontainers.image.title": "agent-canvas",
"org.opencontainers.image.version": "1.19.0"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 3614663354,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/742444766c74a612e5fc771ff75a035c23cbf9456e7f0d505e675bd0f782d975/diff:/var/lib/docker/overlay2/fea887c7b9a16f46c9c0db97d9e5f92cd222fd98ce88fc764104c60ccbf2c61d/diff:/var/lib/docker/overlay2/0141212831a63acfac4ac8df05d93178949ac2ab02839afd784af717f85b8615/diff:/var/lib/docker/overlay2/e4b6a25d1f59cd592129cd1acfdab16af0c1b234e740290ff29065b76edf82e7/diff:/var/lib/docker/overlay2/b399a84cbe19e96e40ff9da81c4e1e95d9e2eb6040b20a76252c7b3a0e2215ea/diff:/var/lib/docker/overlay2/f8823a49fe95cc4d2ddcf37743603a2e36149ae4f382828de01a4916f5beb8c6/diff:/var/lib/docker/overlay2/86a9a0bec93d6f40d63da351a688b282be1075b25d058d694f4a3a175e321640/diff:/var/lib/docker/overlay2/19dd4794f06e102a98e273c7064e97e13320540fa7e5671712723b337d3978b2/diff:/var/lib/docker/overlay2/3c5edcfcc58a479673e2f7a43d708b8f5988f92236251e9a89c5bb0241ab5e24/diff:/var/lib/docker/overlay2/233371d6050aae750ab7ebb6aa825db9222cc3ee92fbe99d63556fe873b5bf01/diff:/var/lib/docker/overlay2/e3843db6f3ce4bf56debb528978be41e835e487b13eb2257cdd5cd832de0ef82/diff:/var/lib/docker/overlay2/2a49d53632b7e12b0df42d2f0d4df0548996782c979254640ee400ec258e846e/diff:/var/lib/docker/overlay2/ecc1c4c86422195cda6533d988d422bb516408591b742f63c5830d8135279014/diff:/var/lib/docker/overlay2/83ef8c7d6545849c3a9a5b0ff8938c7234684527460554fe835dc76d831abb58/diff:/var/lib/docker/overlay2/d821ebed15acdd5d01196207594f52c4051ae6d05ab00d740ae566e100deae0d/diff:/var/lib/docker/overlay2/451cd05068f036f3afa62f6fef43b923da184893974aceede7f9e0c67a678749/diff:/var/lib/docker/overlay2/bc74ee38a210e61c74a761898021fe60a8fd1159b97da94c5994d0dc8e3f7342/diff:/var/lib/docker/overlay2/88bb7deb05bc1b8d5c916a1798c3a125d551981fd118e65cb8844c96a3c7cbbe/diff:/var/lib/docker/overlay2/d01b02711aa9eb4b39086beb20d40bb5f78a01cdd72cf3c5fd96f07e2d26c28f/diff:/var/lib/docker/overlay2/1828a6ffe454881098fc0dd2f543db6e8c40548391d9c56e62cd151ab6a3d4d3/diff:/var/lib/docker/overlay2/e1952f52482d5ad32020897b416ea7e63cbc489c4ee021d5e8acd8f52c814196/diff:/var/lib/docker/overlay2/01684dbc51761d92d7c951b7276714c0595b05244ae5700a272e0c39914c4ea7/diff:/var/lib/docker/overlay2/234bd07a47c4d46eea6689ec0c3c01e5db7e1d1e36972787dbaa2afbdf34ab38/diff:/var/lib/docker/overlay2/57dd638782a4abd2a480f43f22804b47d6788fc8e4be938b92a77ddd123146f6/diff:/var/lib/docker/overlay2/270db88d5e60167ca1d5d26c3e663c04744d462dd208a523adec4fea8659fe9c/diff:/var/lib/docker/overlay2/afa5e99792c880e2fcfb11b7cd261390cc9845d48c252eff967bb7a22c0fdd2f/diff:/var/lib/docker/overlay2/3a5d00fa2a613d8d8f61d64613c2c07da72604a5c1c1ee80ed595605b9a4b6d9/diff:/var/lib/docker/overlay2/c87b6f28e9e9f241ddc33eb0e5804a9504b63aac3d07ec4353cf4efe77188790/diff:/var/lib/docker/overlay2/1e65cbe864b3a855d866919962323e74f6117bde5dc48bc8ba3fd54294cb36a7/diff:/var/lib/docker/overlay2/4c538c6c508afa5728d7c30a76c7f8f1ca634f69665d5c3e4e77554007aa81ec/diff:/var/lib/docker/overlay2/0b808f8662d9372fc151310d1da38ba125e28891a40bc6053dd6601d5759072d/diff:/var/lib/docker/overlay2/4299af85dc07b3236b8b582088640778ed429b87c72f91f1122dca0065693468/diff:/var/lib/docker/overlay2/3ae8a2bf25d088da0faf71a6f5477c14eec2efbd1ef50ca118b236b8b4cf4ed2/diff:/var/lib/docker/overlay2/a5277b58b808722f01a5248a10fe4613caf36c4f452c462a0ecdc1f84d746a73/diff:/var/lib/docker/overlay2/541e62c6718c6f96ce4b1e57f6e7345a791521fe691a5880f5e7ff84dbff38b4/diff:/var/lib/docker/overlay2/c2a696dacdcd5b8480d9f883645aef5d7f18bb808ab62a8bfbe4920c17c72905/diff",
"MergedDir": "/var/lib/docker/overlay2/fa9eda34b24370939e806b0e3dbfac08daa5e132dc1be13a16e73a80d273892f/merged",
"UpperDir": "/var/lib/docker/overlay2/fa9eda34b24370939e806b0e3dbfac08daa5e132dc1be13a16e73a80d273892f/diff",
"WorkDir": "/var/lib/docker/overlay2/fa9eda34b24370939e806b0e3dbfac08daa5e132dc1be13a16e73a80d273892f/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:411a86676185cb54d695a805b238194a64e9b77e0c723f3802fbb87d333ea0b3",
"sha256:01cc1950098fbbce1ebd22dc49cb25e58f4c269133ac6fa10960a6d81715deda",
"sha256:5a2d0705c13bbe6665cc0b9613c43d0fcef5c6b597c28403fc2e82e6838106a0",
"sha256:5457167c99c7b3d0cca511eea91ed12be8459c19c9ba01afbb9c42ac7d35d0b2",
"sha256:7b38ad298f45f9f3198ff4ca03213cbc24e9ba1812a9e20951ac1686737e548f",
"sha256:5408cc49b11823b248c066fa3cd74cb38b7377ccbba1f5662d7a746b87d2d9bd",
"sha256:195542fb7a7e759ca3fa436ef06acead940a5bd47cbb96e5983a4a18533c2aea",
"sha256:e07ddd86059f4d328742f63f33ec5e269bf32f1f75aa0d0cde0c2c53f55e5431",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:930f2f9c1486f7377c9df3eaf07a8b025327b4ab4a34f6c739d68ed34b77e75d",
"sha256:3098c4217cb74527f461ff64528615e3406bee2987b2545078ae866d9f997b84",
"sha256:3feeb86392644004c544a145f5fc162cc1de8031abf83ed96bf7705f89aa06fc",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:9c7f75683739d7353ddf2ed9a5ec1d54ccabd01ce2d473c07a7c6d269e171c31",
"sha256:ce816eadeb5b0de8383bfec000eea0207ae67883280bae9ac7bbb1fd3a205bd7",
"sha256:0e4b9820eec07cf74bd2ee421d69914e0e4357111b330a9786d08468e3e47572",
"sha256:87ec8a8e33b76d5fd40e7650eef56a5ad3f687cd1f08a15cc910e92334b9f572",
"sha256:8b459297202734d45fe7a8aa0ab69cd669c2026e203e171a94a408e3577f86c7",
"sha256:d30052b8394bb96e2a932980f7411b54f59a868a2ca600cbac687fdd63334862",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:19522e966e55b62ca8b33b08a3282cc4c7dd4b955d3c30d097031ac74bc1447f",
"sha256:4898736a98bbdbd04b2db3df1f11f85d794e6739b566efa8c3740f301cecce16",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:822f40b359d25a5579a36b078bcde180a8764367958f6c3f8dfd1dea16eccfb5",
"sha256:27f13b302b8f3e8552be1f0464209fdd5141a59dedddcf8123464731d6ddd074",
"sha256:54e5f2814ca7a1e35386e861bbaea2a78f212ed66bb3cce89004440df4317c63",
"sha256:a1ca7a17d055fa3714065f26bacb2792881d9c53b58bb6b49422b7019d9a4118",
"sha256:2c4f5ebf74186e6654ee80b66918832ff5fd7e706690ff1666fa6c3c6f977b38",
"sha256:5eaeac36bcf98edd4553f0bf7a79cb5f4ea825186556eae0bccf9d3e850d703c",
"sha256:a4240afed57f53049f9e3adca1f0d6a0dd3f9b8a576f15702d42aff280ab1392",
"sha256:ce86c876ef0a1cb1452994038e67c534676378bfa92392a6a83d11bb0e45d410",
"sha256:c5e2e2e577eb3a9745bdd03279a522021f0f95b6b7a8a156947c3b018105e23f",
"sha256:8bdc84b730efa64a95c0f8b61081cab24c791a38511086521b3849bb5af345f2",
"sha256:a71263ff2139473b6797934617c9fc91c4839ae71792c84bfa117c68f9a647ac",
"sha256:8f7659692d4dc953662e0012fc802678b1f2b6cda2e2f7b14f603e4b1d1fd8ac",
"sha256:6cfa40e70359ade961243421af5305127ad265fecc8598a7cf869fb39cc1f367",
"sha256:be877621734cdc0cc629d0a71a17f238807e306635d1d01c4ec77da3c8bc1d32"
]
},
"Metadata": {
"LastTagTime": "2026-09-17T14:57:56.602537096+08:00"
}
}