镜像构建历史
# 2026-05-24 13:19:54 0.00B 设置工作目录为/
WORKDIR /
# 2026-05-24 13:19:54 0.00B 声明容器运行时监听的端口
EXPOSE map[18789/tcp:{}]
# 2026-05-24 13:19:54 422.00B 执行命令并创建新的镜像层
RUN |3 OPENCLAW_VERSION=latest INSTALL_WECOM_PLUGIN=true WECOM_PLUGIN_CLI_VERSION=latest /bin/sh -c set -eux; cat > /opt/gem/supervisord/openclaw.conf <<'EOF'
[program:openclaw]
command=/usr/local/bin/start-openclaw.sh
autostart=true
autorestart=true
startsecs=5
startretries=3
exitcodes=0
priority=900
user=root
stdout_logfile=%(ENV_LOG_DIR)s/openclaw.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stderr_logfile=%(ENV_LOG_DIR)s/openclaw-error.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=5
stopsignal=TERM
stopwaitsecs=10
environment=NODE_ENV="production"
EOF # buildkit
# 2026-05-24 13:19:53 3.95KB 执行命令并创建新的镜像层
RUN |3 OPENCLAW_VERSION=latest INSTALL_WECOM_PLUGIN=true WECOM_PLUGIN_CLI_VERSION=latest /bin/sh -c chmod +x /usr/local/bin/configure-openclaw-deepseek.sh # buildkit
# 2026-05-24 13:19:53 3.95KB 执行命令并创建新的镜像层
RUN |3 OPENCLAW_VERSION=latest INSTALL_WECOM_PLUGIN=true WECOM_PLUGIN_CLI_VERSION=latest /bin/sh -c set -eux; cat > /usr/local/bin/configure-openclaw-deepseek.sh <<'EOF'
#!/bin/sh
# Configure DeepSeek credentials after the sandbox has started.
# Intended to be invoked through envd commands.run with:
# OPENCLAW_DEEPSEEK_API_KEY=sk-... /usr/local/bin/configure-openclaw-deepseek.sh
#
# Optional:
# OPENCLAW_DEFAULT_MODEL=deepseek/deepseek-v4-flash
# OPENCLAW_GATEWAY_TOKEN=<token to preserve/reset>
set -eu
if [ -z "${OPENCLAW_DEEPSEEK_API_KEY:-}" ]; then
echo "OPENCLAW_DEEPSEEK_API_KEY is required" >&2
exit 2
fi
MODEL="${OPENCLAW_DEFAULT_MODEL:-deepseek/deepseek-v4-flash}"
TOKEN_FILE="${OPENCLAW_TOKEN_FILE:-/var/log/openclaw.token}"
if [ -z "${OPENCLAW_GATEWAY_TOKEN:-}" ] && [ -f "$TOKEN_FILE" ]; then
OPENCLAW_GATEWAY_TOKEN="$(cat "$TOKEN_FILE")"
export OPENCLAW_GATEWAY_TOKEN
fi
echo "[configure-openclaw-deepseek] configuring DeepSeek API key and default model"
# Re-assert sandbox-safe defaults and keep the browser token identical to
# /var/log/openclaw.token.
OPENCLAW_GATEWAY_TOKEN="${OPENCLAW_GATEWAY_TOKEN:-}"
OPENCLAW_PORT="${OPENCLAW_PORT:-18789}"
OPENCLAW_BIND="${OPENCLAW_BIND:-auto}"
OPENCLAW_ALLOWED_ORIGINS="${OPENCLAW_ALLOWED_ORIGINS:-*}"
OPENCLAW_DISABLE_DEVICE_AUTH="${OPENCLAW_DISABLE_DEVICE_AUTH:-true}"
OPENCLAW_ALLOW_INSECURE_AUTH="${OPENCLAW_ALLOW_INSECURE_AUTH:-true}"
OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK="${OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK:-true}"
PATCH=$(OPENCLAW_PORT="$OPENCLAW_PORT" \
OPENCLAW_BIND="$OPENCLAW_BIND" \
OPENCLAW_GATEWAY_TOKEN="$OPENCLAW_GATEWAY_TOKEN" \
OPENCLAW_ALLOWED_ORIGINS="$OPENCLAW_ALLOWED_ORIGINS" \
OPENCLAW_DISABLE_DEVICE_AUTH="$OPENCLAW_DISABLE_DEVICE_AUTH" \
OPENCLAW_ALLOW_INSECURE_AUTH="$OPENCLAW_ALLOW_INSECURE_AUTH" \
OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK="$OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK" \
OPENCLAW_DEEPSEEK_API_KEY="$OPENCLAW_DEEPSEEK_API_KEY" \
OPENCLAW_DEFAULT_MODEL="$MODEL" \
python3 -c '
import json, os
origins = os.environ.get("OPENCLAW_ALLOWED_ORIGINS", "*")
ui = {
"allowedOrigins": [o.strip() for o in origins.split(",") if o.strip()],
"dangerouslyDisableDeviceAuth": os.environ.get("OPENCLAW_DISABLE_DEVICE_AUTH", "").lower() == "true",
"allowInsecureAuth": os.environ.get("OPENCLAW_ALLOW_INSECURE_AUTH", "").lower() == "true",
"dangerouslyAllowHostHeaderOriginFallback": os.environ.get("OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK", "").lower() == "true",
}
auth = {"mode": "token"}
if os.environ.get("OPENCLAW_GATEWAY_TOKEN"):
auth["token"] = os.environ["OPENCLAW_GATEWAY_TOKEN"]
model = os.environ.get("OPENCLAW_DEFAULT_MODEL", "deepseek/deepseek-v4-flash")
print(json.dumps({
"env": {
"DEEPSEEK_API_KEY": os.environ["OPENCLAW_DEEPSEEK_API_KEY"],
},
"gateway": {
"bind": os.environ.get("OPENCLAW_BIND", "auto"),
"port": int(os.environ.get("OPENCLAW_PORT", "18789")),
"auth": auth,
"controlUi": ui,
},
"agents": {
"defaults": {
"model": {"primary": model},
"models": {model: {}},
}
},
}))
')
printf '%s' "$PATCH" | openclaw config patch --stdin >/tmp/openclaw-deepseek-config-patch.log 2>&1 || \
echo "[configure-openclaw-deepseek] WARN: config patch failed, see /tmp/openclaw-deepseek-config-patch.log" >&2
if [ -n "$OPENCLAW_GATEWAY_TOKEN" ]; then
mkdir -p "$(dirname "$TOKEN_FILE")"
umask 077
printf '%s\n' "$OPENCLAW_GATEWAY_TOKEN" > "$TOKEN_FILE"
fi
if command -v supervisorctl >/dev/null 2>&1 && [ -S /var/run/supervisor.sock ]; then
if [ "${OPENCLAW_SKIP_GATEWAY_RESTART:-false}" = "true" ]; then
echo "[configure-openclaw-deepseek] gateway restart skipped"
else
echo "[configure-openclaw-deepseek] restarting openclaw gateway"
supervisorctl -c /opt/gem/supervisord.conf restart openclaw || true
fi
fi
echo "[configure-openclaw-deepseek] done"
EOF # buildkit
# 2026-05-24 13:19:53 5.99KB 执行命令并创建新的镜像层
RUN |3 OPENCLAW_VERSION=latest INSTALL_WECOM_PLUGIN=true WECOM_PLUGIN_CLI_VERSION=latest /bin/sh -c chmod +x /usr/local/bin/start-openclaw.sh # buildkit
# 2026-05-24 13:19:53 5.99KB 执行命令并创建新的镜像层
RUN |3 OPENCLAW_VERSION=latest INSTALL_WECOM_PLUGIN=true WECOM_PLUGIN_CLI_VERSION=latest /bin/sh -c set -eux; cat > /usr/local/bin/start-openclaw.sh <<'EOF'
#!/bin/sh
# Start the OpenClaw WebSocket Gateway in foreground.
# Used both as a manual launcher and as the supervisord program command.
#
# Lifecycle:
# DISABLE_OPENCLAW=true idle, no port bound; supervisord reports RUNNING
#
# Listener:
# OPENCLAW_PORT gateway port (default 18789)
# OPENCLAW_BIND bind mode (default auto; binds 0.0.0.0 in containers)
#
# Auth:
# OPENCLAW_AUTH_MODE token (default) | password | trusted-proxy
# OPENCLAW_GATEWAY_TOKEN gateway token; auto-generated if unset
# OPENCLAW_GATEWAY_PASSWORD password auth alternative
# OPENCLAW_TOKEN_FILE token file (default /var/log/openclaw.token)
#
# Browser access:
# OPENCLAW_OPEN_BROWSER=true allowedOrigins=* and relaxed browser checks
# OPENCLAW_ALLOWED_ORIGINS comma-separated allowed origins
# OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK=true
# allow Host-header based origin fallback
#
# Model defaults:
# OPENCLAW_DEFAULT_MODEL default model id (default deepseek/deepseek-v4-flash)
# OPENCLAW_DEEPSEEK_API_KEY when set, configure DeepSeek auth at container startup
#
# Misc:
# OPENCLAW_EXTRA_ARGS extra args appended to openclaw gateway
set -eu
if [ "${DISABLE_OPENCLAW:-false}" = "true" ]; then
echo "[start-openclaw] DISABLE_OPENCLAW=true; idling (supervisord will report RUNNING, no port bound)."
exec sleep infinity
fi
OPENCLAW_PORT="${OPENCLAW_PORT:-18789}"
OPENCLAW_BIND="${OPENCLAW_BIND:-auto}"
OPENCLAW_AUTH_MODE="${OPENCLAW_AUTH_MODE:-token}"
OPENCLAW_DEFAULT_MODEL="${OPENCLAW_DEFAULT_MODEL:-deepseek/deepseek-v4-flash}"
if [ "${OPENCLAW_OPEN_BROWSER:-false}" = "true" ]; then
echo "[start-openclaw] OPEN_BROWSER=true: cross-origin access enabled (any origin)."
echo "[start-openclaw] note: token auth is still enforced."
OPENCLAW_ALLOWED_ORIGINS="${OPENCLAW_ALLOWED_ORIGINS:-*}"
OPENCLAW_DISABLE_DEVICE_AUTH="${OPENCLAW_DISABLE_DEVICE_AUTH:-true}"
OPENCLAW_ALLOW_INSECURE_AUTH="${OPENCLAW_ALLOW_INSECURE_AUTH:-true}"
OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK="${OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK:-true}"
fi
TOKEN_FILE="${OPENCLAW_TOKEN_FILE:-/var/log/openclaw.token}"
if [ "$OPENCLAW_AUTH_MODE" = "token" ] && [ -z "${OPENCLAW_GATEWAY_PASSWORD:-}" ]; then
if [ -n "${OPENCLAW_GATEWAY_TOKEN:-}" ]; then
echo "[start-openclaw] using OPENCLAW_GATEWAY_TOKEN from environment"
elif [ -s "$TOKEN_FILE" ]; then
OPENCLAW_GATEWAY_TOKEN="$(sed -n '1p' "$TOKEN_FILE" | tr -d '\r\n')"
export OPENCLAW_GATEWAY_TOKEN
echo "[start-openclaw] reused OPENCLAW_GATEWAY_TOKEN from $TOKEN_FILE"
else
OPENCLAW_GATEWAY_TOKEN="$(head -c 16 /dev/urandom | od -An -tx1 | tr -d ' \n')"
export OPENCLAW_GATEWAY_TOKEN
echo "[start-openclaw] generated OPENCLAW_GATEWAY_TOKEN=$OPENCLAW_GATEWAY_TOKEN"
fi
mkdir -p "$(dirname "$TOKEN_FILE")"
umask 077
printf '%s\n' "$OPENCLAW_GATEWAY_TOKEN" > "$TOKEN_FILE"
echo "[start-openclaw] token persisted to $TOKEN_FILE"
fi
PATCH=$(OPENCLAW_PORT="$OPENCLAW_PORT" \
OPENCLAW_BIND="$OPENCLAW_BIND" \
OPENCLAW_AUTH_MODE="$OPENCLAW_AUTH_MODE" \
OPENCLAW_GATEWAY_TOKEN="${OPENCLAW_GATEWAY_TOKEN:-}" \
OPENCLAW_GATEWAY_PASSWORD="${OPENCLAW_GATEWAY_PASSWORD:-}" \
OPENCLAW_DEFAULT_MODEL="$OPENCLAW_DEFAULT_MODEL" \
OPENCLAW_ALLOWED_ORIGINS="${OPENCLAW_ALLOWED_ORIGINS:-}" \
OPENCLAW_DISABLE_DEVICE_AUTH="${OPENCLAW_DISABLE_DEVICE_AUTH:-}" \
OPENCLAW_ALLOW_INSECURE_AUTH="${OPENCLAW_ALLOW_INSECURE_AUTH:-}" \
OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK="${OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK:-}" \
python3 -c '
import json, os
ui = {}
origins = os.environ.get("OPENCLAW_ALLOWED_ORIGINS", "").strip()
if origins:
ui["allowedOrigins"] = [o.strip() for o in origins.split(",") if o.strip()]
if os.environ.get("OPENCLAW_DISABLE_DEVICE_AUTH", "").lower() == "true":
ui["dangerouslyDisableDeviceAuth"] = True
if os.environ.get("OPENCLAW_ALLOW_INSECURE_AUTH", "").lower() == "true":
ui["allowInsecureAuth"] = True
if os.environ.get("OPENCLAW_ALLOW_HOST_HEADER_ORIGIN_FALLBACK", "").lower() == "true":
ui["dangerouslyAllowHostHeaderOriginFallback"] = True
auth_mode = os.environ.get("OPENCLAW_AUTH_MODE", "token")
auth = {"mode": auth_mode}
if auth_mode == "token" and os.environ.get("OPENCLAW_GATEWAY_TOKEN"):
auth["token"] = os.environ["OPENCLAW_GATEWAY_TOKEN"]
if auth_mode == "password" and os.environ.get("OPENCLAW_GATEWAY_PASSWORD"):
auth["password"] = os.environ["OPENCLAW_GATEWAY_PASSWORD"]
default_model = os.environ.get("OPENCLAW_DEFAULT_MODEL", "deepseek/deepseek-v4-flash")
gateway = {
"bind": os.environ.get("OPENCLAW_BIND", "auto"),
"port": int(os.environ.get("OPENCLAW_PORT", "18789")),
"auth": auth,
}
if ui:
gateway["controlUi"] = ui
print(json.dumps({
"gateway": gateway,
"agents": {
"defaults": {
"model": {"primary": default_model},
"models": {default_model: {}},
}
},
}))
')
if [ -n "$PATCH" ] && [ "$PATCH" != "{}" ]; then
echo "[start-openclaw] applying config patch: $PATCH"
printf '%s' "$PATCH" | openclaw config patch --stdin 2>&1 | head -3 || \
echo "[start-openclaw] WARN: config patch failed (continuing with defaults)"
fi
if [ -n "${OPENCLAW_DEEPSEEK_API_KEY:-}" ]; then
echo "[start-openclaw] OPENCLAW_DEEPSEEK_API_KEY is set; configuring DeepSeek before gateway start."
OPENCLAW_SKIP_GATEWAY_RESTART=true \
/usr/local/bin/configure-openclaw-deepseek.sh
fi
exec openclaw gateway \
--port "$OPENCLAW_PORT" \
--bind "$OPENCLAW_BIND" \
--auth "$OPENCLAW_AUTH_MODE" \
--allow-unconfigured \
${OPENCLAW_EXTRA_ARGS:-}
EOF # buildkit
# 2026-05-24 13:19:52 54.10MB 执行命令并创建新的镜像层
RUN |3 OPENCLAW_VERSION=latest INSTALL_WECOM_PLUGIN=true WECOM_PLUGIN_CLI_VERSION=latest /bin/sh -c set -eux; if [ "$INSTALL_WECOM_PLUGIN" = "true" ]; then if [ "$WECOM_PLUGIN_CLI_VERSION" = "latest" ] || [ -z "$WECOM_PLUGIN_CLI_VERSION" ]; then npx -y @wecom/wecom-openclaw-cli install --force --skip-config; else npx -y "@wecom/wecom-openclaw-cli@$WECOM_PLUGIN_CLI_VERSION" install --force --skip-config; fi; test -d /root/.openclaw/npm/node_modules/@wecom/wecom-openclaw-plugin; openclaw plugins list || true; fi # buildkit
# 2026-05-24 13:19:20 651.40MB 执行命令并创建新的镜像层
RUN |3 OPENCLAW_VERSION=latest INSTALL_WECOM_PLUGIN=true WECOM_PLUGIN_CLI_VERSION=latest /bin/sh -c set -eux; if [ "$OPENCLAW_VERSION" = "latest" ] || [ -z "$OPENCLAW_VERSION" ]; then npm install -g openclaw; else npm install -g "openclaw@$OPENCLAW_VERSION"; fi; openclaw --version || openclaw -v || echo "openclaw installed" # buildkit
# 2026-05-24 13:19:04 0.00B 执行命令并创建新的镜像层
RUN |3 OPENCLAW_VERSION=latest INSTALL_WECOM_PLUGIN=true WECOM_PLUGIN_CLI_VERSION=latest /bin/sh -c node -v && npm -v # buildkit
# 2026-05-24 13:19:04 0.00B 设置环境变量 DEBIAN_FRONTEND OPENCLAW_OPEN_BROWSER OPENCLAW_DEFAULT_MODEL
ENV DEBIAN_FRONTEND=noninteractive OPENCLAW_OPEN_BROWSER=true OPENCLAW_DEFAULT_MODEL=deepseek/deepseek-v4-flash
# 2026-05-24 13:19:04 0.00B 定义构建参数
ARG WECOM_PLUGIN_CLI_VERSION=latest
# 2026-05-24 13:19:04 0.00B 定义构建参数
ARG INSTALL_WECOM_PLUGIN=true
# 2026-05-24 13:19:04 0.00B 定义构建参数
ARG OPENCLAW_VERSION=latest
# 2026-04-19 11:03:25 0.00B 设置默认要执行的命令
CMD ["/usr/local/bin/aio-with-envd.sh"]
# 2026-04-19 11:03:25 0.00B 配置容器启动时运行的命令
ENTRYPOINT []
# 2026-04-19 11:03:25 0.00B 声明容器运行时监听的端口
EXPOSE map[49983/tcp:{} 8080/tcp:{}]
# 2026-04-19 11:03:25 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c chmod +x /usr/local/bin/aio-with-envd.sh # buildkit
# 2026-04-19 11:03:25 312.00B 复制新文件或目录到容器中
COPY aio-with-envd.sh /usr/local/bin/aio-with-envd.sh # buildkit
# 2026-04-19 11:03:25 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c chmod +x /usr/bin/envd # buildkit
# 2026-04-19 11:03:25 15.35MB 复制新文件或目录到容器中
COPY envd /usr/bin/envd # buildkit
# 2025-11-12 17:26:19 0.00B 声明容器运行时监听的端口
EXPOSE map[8080/tcp:{}]
# 2025-11-12 17:26:19 10.00B 执行命令并创建新的镜像层
RUN |14 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 VERSION=1.0.0.152 /bin/sh -c echo "${VERSION}" > /etc/aio_version # buildkit
# 2025-11-12 17:26:19 0.00B 添加元数据标签
LABEL version=1.0.0.152
# 2025-11-12 17:26:19 0.00B 定义构建参数
ARG VERSION=1.0.0.152
# 2025-11-12 17:26:19 830.00B 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c sed -i '/types_hash_max_size/a\ client_max_body_size 200m;' /opt/gem/nginx.conf && sed -i -e '/^http {/,/^}/ {' -e '/^}/i\ include /opt/gem/nginx-server-port-proxy.conf;' -e '}' /opt/gem/nginx.conf; # buildkit
# 2025-11-12 17:26:19 2.80KB 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c set -eux; chmod +x /opt/gem/mcp-hub-wait.sh /opt/gem/code-server.sh /opt/gem/jupyter-lab.sh /opt/gem/tinyproxy.sh /opt/gem/wait-for-python-server.sh /opt/gem/bashrc; mkdir -p /opt/application && ln -s /opt/gem/run.sh /opt/application/run.sh; # buildkit
# 2025-11-12 17:26:19 1.30KB 复制新文件或目录到容器中
COPY ./configs/nginx-server-port-proxy.conf.template /opt/gem/nginx-server-port-proxy.conf.template # buildkit
# 2025-11-12 17:26:19 5.04KB 复制新文件或目录到容器中
COPY ./configs/nginx/*.conf /opt/gem/nginx/ # buildkit
# 2025-11-12 17:26:19 2.53KB 复制新文件或目录到容器中
COPY ./configs/supervisord/*.conf /opt/gem/supervisord/ # buildkit
# 2025-11-12 17:26:19 0.00B 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c chmod +x /usr/local/bin/linux_amd64_ve # buildkit
# 2025-11-12 17:26:19 8.81MB 复制新文件或目录到容器中
COPY ./tool/cloud-providers/volcengine/linux_amd64_ve /usr/local/bin/linux_amd64_ve # buildkit
# 2025-11-12 17:26:19 0.00B 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c chmod +x /usr/local/bin/ve # buildkit
# 2025-11-12 17:26:19 3.23KB 复制新文件或目录到容器中
COPY ./tool/cloud-providers/volcengine/ve /usr/local/bin/ve # buildkit
# 2025-11-12 17:26:19 56.00B 复制新文件或目录到容器中
COPY ./configs/jupyter /opt/gem/jupyter # buildkit
# 2025-11-12 17:26:19 145.00B 复制新文件或目录到容器中
COPY ./configs/vscode /opt/gem/vscode # buildkit
# 2025-11-12 17:26:18 118.00B 复制新文件或目录到容器中
COPY ./configs/matplotlibrc /opt/gem/matplotlibrc # buildkit
# 2025-11-12 17:26:18 27.00B 复制新文件或目录到容器中
COPY ./configs/bashrc /opt/gem/bashrc # buildkit
# 2025-11-12 17:26:18 41.31KB 复制新文件或目录到容器中
COPY ./configs/index.html.template /opt/aio/index.html.template # buildkit
# 2025-11-12 17:26:18 12.76KB 复制新文件或目录到容器中
COPY ./python-server/terminal.html /opt/terminal/index.html # buildkit
# 2025-11-12 17:26:18 1.13KB 复制新文件或目录到容器中
COPY ./configs/wait-for-python-server.sh /opt/gem/wait-for-python-server.sh # buildkit
# 2025-11-12 17:26:18 151.00B 复制新文件或目录到容器中
COPY ./configs/tinyproxy.sh /opt/gem/tinyproxy.sh # buildkit
# 2025-11-12 17:26:18 531.00B 复制新文件或目录到容器中
COPY ./configs/jupyter-lab.sh /opt/gem/jupyter-lab.sh # buildkit
# 2025-11-12 17:26:18 458.00B 复制新文件或目录到容器中
COPY ./configs/code-server.sh /opt/gem/code-server.sh # buildkit
# 2025-11-12 17:26:18 1.65KB 复制新文件或目录到容器中
COPY ./configs/mcp-hub-wait.sh /opt/gem/mcp-hub-wait.sh # buildkit
# 2025-11-12 17:26:18 554.00B 复制新文件或目录到容器中
COPY ./configs/mcp-hub.json.template /opt/gem/mcp-hub.json.template # buildkit
# 2025-11-12 17:26:18 8.16KB 复制新文件或目录到容器中
COPY ./run.sh /opt/gem/run.sh # buildkit
# 2025-11-12 17:26:18 440.00B 复制新文件或目录到容器中
COPY ./configs/tinyproxy /opt/gem/tinyproxy # buildkit
# 2025-11-12 17:26:18 0.00B 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c rm -rf /opt/gem/run.sh /opt/gem/browser-ctl.sh && touch /opt/gem/mcp.disabled && mkdir -p /opt/terminal /opt/aio; # buildkit
# 2025-11-12 17:26:18 0.00B 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-11-12 17:26:18 759.25MB 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c set -eux; pip3.12 install --no-cache-dir /tmp/wheels/*.whl -r /tmp/requirements.txt && rm -rf /tmp/wheels /tmp/requirements.txt && ln -sf /opt/python3.12/bin/python-server /usr/local/bin/python-server; # buildkit
# 2025-11-12 17:25:23 9.27KB 复制新文件或目录到容器中
COPY /app/requirements.txt /tmp/requirements.txt # buildkit
# 2025-11-12 17:25:23 140.42KB 复制新文件或目录到容器中
COPY /wheels/*.whl /tmp/wheels/ # buildkit
# 2025-11-12 17:25:22 189.46MB 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c npm install -g @agent-infra/mcp-hub@1.1.0 @agent-infra/mcp-server-browser@1.2.21 chrome-devtools-mcp@0.9.0; # buildkit
# 2025-11-12 17:24:55 156.57MB 复制新文件或目录到容器中
COPY /root/sandbox/runtime/node/node_modules /opt/runtime/nodejs/node_modules # buildkit
# 2025-11-12 17:24:49 0.00B 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c mkdir -p /opt/runtime/nodejs # buildkit
# 2025-11-12 17:24:48 120.17MB 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c /usr/bin/python3.10 -m pip install ipykernel && /usr/bin/python3.10 -m ipykernel install --name python3.10 --display-name "Python 3.10" && /opt/python3.11/bin/python -m pip install ipykernel && /opt/python3.11/bin/python -m ipykernel install --name python3.11 --display-name "Python 3.11" # buildkit
# 2025-11-12 17:24:33 212.33MB 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c /opt/python3.12/bin/pip install jupyterlab==4.4.5 && mkdir -p /opt/jupyter/runtime /opt/jupyter/data && chmod -R 755 /opt/jupyter; # buildkit
# 2025-11-12 17:24:15 453.78MB 执行命令并创建新的镜像层
RUN |13 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz CODE_SERVER_ARCH_NAME= CODE_SERVER_VERSION=4.104.0 /bin/sh -c if [ "$TARGETARCH" = "arm64" ]; then CODE_SERVER_ARCH_NAME="arm64"; else CODE_SERVER_ARCH_NAME="amd64"; fi; curl -fL ${GITHUB_PROXY}https://github.com/coder/code-server/releases/download/v${CODE_SERVER_VERSION}/code-server-${CODE_SERVER_VERSION}-linux-${CODE_SERVER_ARCH_NAME}.tar.gz | tar -C /usr/local -xz && mv /usr/local/code-server-${CODE_SERVER_VERSION}-linux-${CODE_SERVER_ARCH_NAME} /usr/local/code-server-${CODE_SERVER_VERSION} && ln -s /usr/local/code-server-${CODE_SERVER_VERSION}/bin/code-server /usr/bin/code-server && cd /usr/local/code-server-${CODE_SERVER_VERSION}/lib/vscode/out/vs/code/browser/workbench && patch -p0 < /tmp/code-server-4.104.0-workbench.js.patch && rm -rf /tmp/code-server-4.104.0-workbench.js.patch && /usr/bin/code-server --version; # buildkit
# 2025-11-12 17:24:04 448.19KB 复制新文件或目录到容器中
COPY ./patches/code-server-4.104.0/workbench.js.patch /tmp/code-server-4.104.0-workbench.js.patch # buildkit
# 2025-11-12 17:24:04 0.00B 定义构建参数
ARG CODE_SERVER_VERSION=4.104.0
# 2025-11-12 17:24:04 0.00B 定义构建参数
ARG CODE_SERVER_ARCH_NAME
# 2025-11-12 17:24:04 189.24MB 执行命令并创建新的镜像层
RUN |11 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a GITHUB_PROXY= TARGETARCH=amd64 PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz /bin/sh -c if [ "$TARGETARCH" = "arm64" ]; then PYTHON_3_11_URL=$PYTHON_3_11_URL_ARM64; PYTHON_3_12_URL=$PYTHON_3_12_URL_ARM64; else PYTHON_3_11_URL=$PYTHON_3_11_URL_AMD64; PYTHON_3_12_URL=$PYTHON_3_12_URL_AMD64; fi; wget -O /tmp/python311.tar.gz $PYTHON_3_11_URL & wget -O /tmp/python312.tar.gz $PYTHON_3_12_URL & wait; mkdir -p /opt/python3.11 /opt/python3.12; tar -xzf /tmp/python311.tar.gz -C /opt/python3.11 --strip-components=1 & tar -xzf /tmp/python312.tar.gz -C /opt/python3.12 --strip-components=1 & wait; rm /tmp/python311.tar.gz /tmp/python312.tar.gz; ln -s /opt/python3.11/bin/python /usr/local/bin/python3.11 && ln -s /opt/python3.11/bin/pip /usr/local/bin/pip3.11 && ln -s /opt/python3.12/bin/python /usr/local/bin/python3.12 && ln -s /opt/python3.12/bin/pip /usr/local/bin/pip3.12 && ln -s /usr/bin/python3 /usr/bin/python; # buildkit
# 2025-11-12 17:23:57 0.00B 定义构建参数
ARG PYTHON_3_12_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz
# 2025-11-12 17:23:57 0.00B 定义构建参数
ARG PYTHON_3_12_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
# 2025-11-12 17:23:57 0.00B 定义构建参数
ARG PYTHON_3_11_URL_ARM64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz
# 2025-11-12 17:23:57 0.00B 定义构建参数
ARG PYTHON_3_11_URL_AMD64=https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
# 2025-11-12 17:23:57 0.00B 定义构建参数
ARG TARGETARCH=amd64
# 2025-11-12 17:23:57 0.00B 定义构建参数
ARG GITHUB_PROXY=
# 2025-11-12 17:23:57 984.18MB 执行命令并创建新的镜像层
RUN |5 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a /bin/sh -c pip install --no-cache-dir --prefer-binary matplotlib pandas numpy fastapi scipy xlsxwriter requests seaborn httpx plotly==5.24.0 pillow kaleido PyMuPDF docx2txt lxml bs4 openpyxl uvicorn python-pptx beautifulsoup4 pytesseract xlrd biopython networkx yfinance pydub opencv-python tabulate PyPDF2 geopy pyecharts manim qrcode weasyprint; # buildkit
# 2025-11-12 17:22:55 44.76MB 复制新文件或目录到容器中
COPY /uv /uvx /usr/local/bin/ # buildkit
# 2025-11-12 17:22:54 3.08MB 执行命令并创建新的镜像层
RUN |5 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a /bin/sh -c chmod a+rx /usr/local/bin/yt-dlp # buildkit
# 2025-11-12 17:22:54 3.08MB 复制新文件或目录到容器中
COPY ./configs/yt-dlp /usr/local/bin/yt-dlp # buildkit
# 2025-11-12 17:22:54 2.88MB 执行命令并创建新的镜像层
RUN |5 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a /bin/sh -c apt-get update && apt-get install -y --no-install-recommends autoconf automake libtool && cd /tmp && wget https://github.com/tinyproxy/tinyproxy/archive/${TINYPROXY_COMMIT}.zip -O tinyproxy.zip && unzip tinyproxy.zip && cd tinyproxy-${TINYPROXY_COMMIT} && ./autogen.sh && ./configure --sysconfdir=/etc --disable-manpage-support && make && make install && rm -rf /tmp/tinyproxy* && apt-get purge -y autoconf automake libtool && apt-get autoremove -y; # buildkit
# 2025-11-12 17:22:32 0.00B 定义构建参数
ARG TINYPROXY_COMMIT=3c0fde94981b025271ffa1788ae425257841bf5a
# 2025-11-12 17:22:32 7.00MB 执行命令并创建新的镜像层
RUN |4 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple /bin/sh -c update-ca-certificates && locale-gen en_US.UTF-8 && locale-gen zh_CN.UTF-8 && fc-cache -fv && ulimit -n 4096 # buildkit
# 2025-11-12 17:22:25 1.02GB 执行命令并创建新的镜像层
RUN |4 APT_MIRROR_HOST= DISABLE_MCP_SERVER=true PIP_INDEX_URL=https://bytedpypi.byted.org/simple UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple /bin/sh -c set -eux; if [ -n "${APT_MIRROR_HOST}" ]; then cp /etc/apt/sources.list /etc/apt/sources.list.orig; sed -i -E -e "s;//([^/]*\.)?(ubuntu\.com|debian\.org);//${APT_MIRROR_HOST};g" /etc/apt/sources.list; fi; apt-get update; apt-get install -y --no-install-recommends software-properties-common openssh-client fontconfig fonts-noto-cjk fonts-noto-cjk-extra fonts-dejavu locales wget vim nano git unzip zip tar gzip tree htop iputils-ping telnet net-tools lsof netcat-openbsd nmap file less rsync lsyncd procps psmisc coreutils util-linux sudo grep sed gawk jq ripgrep ffmpeg imagemagick tmux gh gcc build-essential cmake libcairo2-dev libffi-dev libpango1.0-dev freeglut3-dev pkg-config make ca-certificates # buildkit
# 2025-11-12 17:22:25 0.00B 设置环境变量 DISABLE_JUPYTER DISABLE_CODE_SERVER
ENV DISABLE_JUPYTER=false DISABLE_CODE_SERVER=false
# 2025-11-12 17:22:25 0.00B 设置环境变量 UV_TOOL_DIR
ENV UV_TOOL_DIR=/usr/local/share/uv/tools
# 2025-11-12 17:22:25 0.00B 设置环境变量 UV_TOOL_BIN_DIR
ENV UV_TOOL_BIN_DIR=/usr/local/bin/
# 2025-11-12 17:22:25 0.00B 设置环境变量 DNS_OVER_HTTPS_TEMPLATES
ENV DNS_OVER_HTTPS_TEMPLATES=
# 2025-11-12 17:22:25 0.00B 设置环境变量 DISPLAY_HEIGHT
ENV DISPLAY_HEIGHT=1024
# 2025-11-12 17:22:25 0.00B 设置环境变量 DISPLAY_WIDTH
ENV DISPLAY_WIDTH=1280
# 2025-11-12 17:22:25 0.00B 设置环境变量 BROWSER_USER_AGENT
ENV BROWSER_USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
# 2025-11-12 17:22:25 0.00B 设置环境变量 BROWSER_NO_SANDBOX
ENV BROWSER_NO_SANDBOX=
# 2025-11-12 17:22:25 0.00B 设置环境变量 DEBIAN_FRONTEND LANG TZ LANGUAGE LC_ALL PUPPETEER_EXECUTABLE_PATH PUPPETEER_SKIP_CHROMIUM_DOWNLOAD
ENV DEBIAN_FRONTEND=noninteractive LANG=en_US.UTF-8 TZ=Asia/Singapore LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 PUPPETEER_EXECUTABLE_PATH=/usr/local/bin/browser PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
# 2025-11-12 17:22:25 0.00B 定义构建参数
ARG UV_DEFAULT_INDEX=https://bytedpypi.byted.org/simple
# 2025-11-12 17:22:25 0.00B 定义构建参数
ARG PIP_INDEX_URL=https://bytedpypi.byted.org/simple
# 2025-11-12 17:22:25 0.00B 定义构建参数
ARG DISABLE_MCP_SERVER=true
# 2025-11-12 17:22:25 0.00B 定义构建参数
ARG APT_MIRROR_HOST=
# 2025-11-12 17:22:25 0.00B 设置环境变量 MAX_SHELL_SESSIONS
ENV MAX_SHELL_SESSIONS=50
# 2025-11-12 17:22:25 0.00B 设置环境变量 WAIT_PORTS
ENV WAIT_PORTS=8091,8079
# 2025-11-12 17:22:25 0.00B 设置环境变量 TINYPROXY_PORT
ENV TINYPROXY_PORT=8118
# 2025-11-12 17:22:25 0.00B 设置环境变量 MCP_SERVER_BROWSER_PORT
ENV MCP_SERVER_BROWSER_PORT=8100
# 2025-11-12 17:22:25 0.00B 设置环境变量 CODE_SERVER_PORT
ENV CODE_SERVER_PORT=8200
# 2025-11-12 17:22:25 0.00B 设置环境变量 JUPYTER_LAB_PORT
ENV JUPYTER_LAB_PORT=8888
# 2025-11-12 17:22:25 0.00B 设置环境变量 SANDBOX_SRV_PORT
ENV SANDBOX_SRV_PORT=8091
# 2025-11-12 17:22:25 0.00B 设置环境变量 MCP_HUB_PORT
ENV MCP_HUB_PORT=8079
# 2025-11-11 23:32:12 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/opt/gem/run.sh"]
# 2025-11-11 23:32:12 608.00B 执行命令并创建新的镜像层
RUN |14 REGION=china-north-lf TARGETARCH=amd64 APT_MIRROR_HOST= WEBSOCAT_URL= NOVNC_URL=https://github.com/novnc/noVNC/archive/refs/tags/v1.4.0.zip BROWSER_SOURCE=rs NPM_CONFIG_REGISTRY=https://bnpm.byted.org NODEJS_SETUP_URL=https://deb.nodesource.com/setup_22.x DISABLE_MCP_SERVER=false MCP_SERVER_VERSION=1.2.21 PYTHON_URL= PIPX_URL=https://github.com/pypa/pipx/releases/download/1.7.1/pipx.pyz PIP_INDEX_URL=https://bytedpypi.byted.org/simple USE_SYSTEM_PYTHON=true /bin/sh -c set -eux; chmod +x /opt/gem/browser-ctl.sh /opt/gem/entrypoint.sh /opt/gem/mcp-ctl.sh /opt/gem/nginx-wait.sh /opt/gem/openbox.sh /opt/gem/start-browser.sh /opt/gem/xdg-settings; ln -s /opt/gem/xdg-settings /usr/local/bin/xdg-settings; ln -s /opt/gem/entrypoint.sh /opt/gem/run.sh; ln -s /opt/gem/supervisord.conf /etc/supervisord.conf # buildkit
# 2025-11-11 23:32:12 0.00B 声明容器运行时监听的端口
EXPOSE map[8080/tcp:{}]
# 2025-11-11 23:32:12 0.00B 指定检查容器健康状态的命令
HEALTHCHECK &{["CMD-SHELL" "nc -z localhost ${BROWSER_REMOTE_DEBUGGING_PORT} || exit 1"] "10s" "5s" "0s" "0s" '\b'}
# 2025-11-11 23:32:12 0.00B 设置环境变量 WAIT_INTERVAL
ENV WAIT_INTERVAL=0.25
# 2025-11-11 23:32:12 0.00B 设置环境变量 WAIT_TIMEOUT
ENV WAIT_TIMEOUT=300
# 2025-11-11 23:32:12 0.00B 设置环境变量 WAIT_PORTS
ENV WAIT_PORTS=
# 2025-11-11 23:32:12 0.00B 设置环境变量 AUTH_BACKEND_PORT
ENV AUTH_BACKEND_PORT=8081
# 2025-11-11 23:32:12 0.00B 设置环境变量 PUBLIC_PORT
ENV PUBLIC_PORT=8080
# 2025-11-11 23:32:12 0.00B 设置环境变量 MCP_SERVER_PORT
ENV MCP_SERVER_PORT=8089
# 2025-11-11 23:32:12 0.00B 设置环境变量 GEM_SERVER_PORT
ENV GEM_SERVER_PORT=8088
# 2025-11-11 23:32:12 0.00B 设置环境变量 WEBSOCKET_PROXY_PORT
ENV WEBSOCKET_PROXY_PORT=6080
# 2025-11-11 23:32:12 0.00B 设置环境变量 VNC_SERVER_PORT
ENV VNC_SERVER_PORT=5900
# 2025-11-11 23:32:12 0.00B 设置环境变量 JWT_PUBLIC_KEY
ENV JWT_PUBLIC_KEY=
# 2025-11-11 23:32:12 0.00B 设置环境变量 LOG_DIR
ENV LOG_DIR=/var/log/gem
# 2025-11-11 23:32:12 0.00B 设置环境变量 DNS_OVER_HTTPS_TEMPLATES
ENV DNS_OVER_HTTPS_TEMPLATES=https://dns.alidns.com/dns-query{?dns}
# 2025-11-11 23:32:12 0.00B 设置环境变量 BROWSER_EXTRA_ARGS
ENV BROWSER_EXTRA_ARGS=
# 2025-11-11 23:32:12 0.00B 设置环境变量 BROWSER_COMMANDLINE_ARGS --disable-blink-features --disable-features --remote-allow-origins --remote-debugging-port
ENV BROWSER_COMMANDLINE_ARGS=--disable-backgrounding-occluded-windows --disable-background-timer-throttling --disable-blink-features=AutomationControlled --disable-dev-shm-usage --disable-external-intent-requests --disable-features=IPH_DesktopCustomizeChrome,IsolateOrigins,site-per-proces,Translate --disable-focus-on-load --disable-gpu --disable-infobars --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-site-isolation-trials --disable-web-security --disable-window-activation --mute-audio --no-default-browser-check --no-first-run --noerrdialogs --remote-allow-origins=* --remote-debugging-port=9222 --suppress-message-center-popups --start-maximized
# 2025-11-11 23:32:12 0.00B 设置环境变量 BROWSER_REMOTE_DEBUGGING_PORT
ENV BROWSER_REMOTE_DEBUGGING_PORT=9222
# 2025-11-11 23:32:12 0.00B 设置环境变量 BROWSER_EXECUTABLE_PATH
ENV BROWSER_EXECUTABLE_PATH=/usr/local/bin/browser
# 2025-11-11 23:32:12 0.00B 设置环境变量 XDG_RUNTIME_DIR
ENV XDG_RUNTIME_DIR=/tmp/runtime-gem
# 2025-11-11 23:32:12 0.00B 设置环境变量 DISPLAY_DEPTH
ENV DISPLAY_DEPTH=24
# 2025-11-11 23:32:12 0.00B 设置环境变量 DISPLAY_HEIGHT
ENV DISPLAY_HEIGHT=720
# 2025-11-11 23:32:12 0.00B 设置环境变量 DISPLAY_WIDTH
ENV DISPLAY_WIDTH=1280
# 2025-11-11 23:32:12 0.00B 设置环境变量 DISPLAY
ENV DISPLAY=:99.0
# 2025-11-11 23:32:12 0.00B 设置环境变量 USER_GID
ENV USER_GID=1000
# 2025-11-11 23:32:12 0.00B 设置环境变量 USER_UID
ENV USER_UID=1000
# 2025-11-11 23:32:12 0.00B 设置环境变量 USER
ENV USER=gem
# 2025-11-11 23:32:12 2.39KB 执行命令并创建新的镜像层
RUN |14 REGION=china-north-lf TARGETARCH=amd64 APT_MIRROR_HOST= WEBSOCAT_URL= NOVNC_URL=https://github.com/novnc/noVNC/archive/refs/tags/v1.4.0.zip BROWSER_SOURCE=rs NPM_CONFIG_REGISTRY=https://bnpm.byted.org NODEJS_SETUP_URL=https://deb.nodesource.com/setup_22.x DISABLE_MCP_SERVER=false MCP_SERVER_VERSION=1.2.21 PYTHON_URL= PIPX_URL=https://github.com/pypa/pipx/releases/download/1.7.1/pipx.pyz PIP_INDEX_URL=https://bytedpypi.byted.org/simple USE_SYSTEM_PYTHON=true /bin/sh -c set -eux; mkdir -p /opt/gem/supervisord/ /opt/gem/nginx/; cp /opt/gem/supervisord.browser.conf /opt/gem/supervisord/browser.conf; cp /opt/gem/supervisord.nginx.conf /opt/gem/supervisord/nginx.conf; cp /opt/gem/supervisord.openbox.conf /opt/gem/supervisord/openbox.conf; cp /opt/gem/supervisord.srv.conf /opt/gem/supervisord/srv.conf; cp /opt/gem/supervisord.vnc.conf /opt/gem/supervisord/vnc.conf; mkdir -p /etc/browser/policies/managed; cp /opt/gem/policies.json /etc/browser/policies/managed/policies.json # buildkit
# 2025-11-11 23:32:12 61.49KB 复制新文件或目录到容器中
COPY config/ /opt/gem/ # buildkit
# 2025-11-10 14:01:00 0.00B 执行命令并创建新的镜像层
RUN |14 REGION=china-north-lf TARGETARCH=amd64 APT_MIRROR_HOST= WEBSOCAT_URL= NOVNC_URL=https://github.com/novnc/noVNC/archive/refs/tags/v1.4.0.zip BROWSER_SOURCE=rs NPM_CONFIG_REGISTRY=https://bnpm.byted.org NODEJS_SETUP_URL=https://deb.nodesource.com/setup_22.x DISABLE_MCP_SERVER=false MCP_SERVER_VERSION=1.2.21 PYTHON_URL= PIPX_URL=https://github.com/pypa/pipx/releases/download/1.7.1/pipx.pyz PIP_INDEX_URL=https://bytedpypi.byted.org/simple USE_SYSTEM_PYTHON=true /bin/sh -c apt-get clean -y; rm -rf /var/lib/apt/lists/* /var/cache/apt/*; if [ -f /etc/apt/sources.list.orig ]; then mv /etc/apt/sources.list.orig /etc/apt/sources.list; fi # buildkit
# 2025-11-10 14:01:00 3.04MB 执行命令并创建新的镜像层
RUN |14 REGION=china-north-lf TARGETARCH=amd64 APT_MIRROR_HOST= WEBSOCAT_URL= NOVNC_URL=https://github.com/novnc/noVNC/archive/refs/tags/v1.4.0.zip BROWSER_SOURCE=rs NPM_CONFIG_REGISTRY=https://bnpm.byted.org NODEJS_SETUP_URL=https://deb.nodesource.com/setup_22.x DISABLE_MCP_SERVER=false MCP_SERVER_VERSION=1.2.21 PYTHON_URL= PIPX_URL=https://github.com/pypa/pipx/releases/download/1.7.1/pipx.pyz PIP_INDEX_URL=https://bytedpypi.byted.org/simple USE_SYSTEM_PYTHON=true /bin/sh -c pip install supervisor==4.3.0 && ln -s /usr/local/bin/supervisord /usr/bin/supervisord && ln -s /usr/local/bin/supervisorctl /usr/bin/supervisorctl # buildkit
# 2025-11-10 14:00:59 92.31MB 执行命令并创建新的镜像层
RUN |14 REGION=china-north-lf TARGETARCH=amd64 APT_MIRROR_HOST= WEBSOCAT_URL= NOVNC_URL=https://github.com/novnc/noVNC/archive/refs/tags/v1.4.0.zip BROWSER_SOURCE=rs NPM_CONFIG_REGISTRY=https://bnpm.byted.org NODEJS_SETUP_URL=https://deb.nodesource.com/setup_22.x DISABLE_MCP_SERVER=false MCP_SERVER_VERSION=1.2.21 PYTHON_URL= PIPX_URL=https://github.com/pypa/pipx/releases/download/1.7.1/pipx.pyz PIP_INDEX_URL=https://bytedpypi.byted.org/simple USE_SYSTEM_PYTHON=true /bin/sh -c set -eux; if [ "$(python3 -c 'import sys; print(sys.version_info.major == 3 and sys.version_info.minor == 10)')" = "True" ] && [ "$USE_SYSTEM_PYTHON" = "true" ]; then curl -sSL https://bootstrap.pypa.io/get-pip.py | python3; pip install --no-cache-dir -r /tmp/requirements.txt --no-deps /tmp/wheels/*.whl; rm -rf /tmp/wheels /tmp/requirements.txt; else _python_url="${PYTHON_URL}"; if [ -z "${_python_url}" ]; then ARCH_STRING=""; case "${TARGETARCH}" in "amd64") ARCH_STRING="x86_64" ;; "arm64") ARCH_STRING="aarch64" ;; *) echo "Unsupported architecture for Python standalone: ${TARGETARCH}"; exit 1 ;; esac; _python_url="https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18+20250723-${ARCH_STRING}-unknown-linux-gnu-install_only_stripped.tar.gz"; fi; wget -O /tmp/python.tar.gz "${_python_url}"; mkdir -p /opt/python; tar -xzf /tmp/python.tar.gz -C /opt/python --strip-components=1; /opt/python/bin/python3 -m venv /opt/gem-server/.venv; /opt/gem-server/.venv/bin/pip3 install --no-cache-dir -r /tmp/requirements.txt; rm -rf /tmp/python.tar.gz /tmp/requirements.txt; ln -s /opt/gem-server/gem-server /usr/local/bin/gem-server; fi # buildkit
# 2025-11-10 14:00:36 295.98KB 复制新文件或目录到容器中
COPY server/ /opt/gem-server/ # buildkit
# 2025-11-10 14:00:36 2.13KB 复制新文件或目录到容器中
COPY /app/requirements.txt /tmp/requirements.txt # buildkit
# 2025-11-10 14:00:36 18.12KB 复制新文件或目录到容器中
COPY /wheels/*.whl /tmp/wheels/ # buildkit
# 2025-11-04 00:19:36 0.00B 定义构建参数
ARG USE_SYSTEM_PYTHON=true
# 2025-11-04 00:19:36 0.00B 定义构建参数
ARG PIP_INDEX_URL=https://bytedpypi.byted.org/simple
# 2025-11-04 00:19:36 0.00B 定义构建参数
ARG PIPX_URL=https://github.com/pypa/pipx/releases/download/1.7.1/pipx.pyz
# 2025-11-04 00:19:36 0.00B 定义构建参数
ARG PYTHON_URL=
# 2025-11-04 00:19:36 393.41MB 执行命令并创建新的镜像层
RUN |10 REGION=china-north-lf TARGETARCH=amd64 APT_MIRROR_HOST= WEBSOCAT_URL= NOVNC_URL=https://github.com/novnc/noVNC/archive/refs/tags/v1.4.0.zip BROWSER_SOURCE=rs NPM_CONFIG_REGISTRY=https://bnpm.byted.org NODEJS_SETUP_URL=https://deb.nodesource.com/setup_22.x DISABLE_MCP_SERVER=false MCP_SERVER_VERSION=1.2.21 /bin/sh -c set -eux; if [ -z "$DISABLE_MCP_SERVER" ] || [ "$DISABLE_MCP_SERVER" = "false" ]; then /opt/gem/mcp-ctl.sh install ${MCP_SERVER_VERSION}; else touch /opt/gem/mcp.disabled; fi # buildkit
# 2025-11-04 00:19:06 0.00B 定义构建参数
ARG MCP_SERVER_VERSION=1.2.21
# 2025-11-04 00:19:06 0.00B 定义构建参数
ARG DISABLE_MCP_SERVER=false
# 2025-11-04 00:19:06 0.00B 定义构建参数
ARG NODEJS_SETUP_URL=https://deb.nodesource.com/setup_22.x
# 2025-11-04 00:19:06 0.00B 定义构建参数
ARG NPM_CONFIG_REGISTRY=https://bnpm.byted.org
# 2025-11-04 00:19:06 3.02KB 复制新文件或目录到容器中
COPY config/mcp-ctl.sh /opt/gem/mcp-ctl.sh # buildkit
# 2025-11-04 00:19:06 535.86MB 执行命令并创建新的镜像层
RUN |6 REGION=china-north-lf TARGETARCH=amd64 APT_MIRROR_HOST= WEBSOCAT_URL= NOVNC_URL=https://github.com/novnc/noVNC/archive/refs/tags/v1.4.0.zip BROWSER_SOURCE=rs /bin/sh -c set -eux; case "${REGION}" in "china-north-lf"|"") URL_PREFIX="https://lf3-static.bytednsdoc.com/obj/eden-cn/100upeupq/" ;; "aliyun_sg") URL_PREFIX="https://sf16-sg.tiktokcdn.com/obj/eden-sg/100upeupq/" ;; "aliyun_va") URL_PREFIX="https://sf16-va.tiktokcdn.com/obj/eden-va2/100upeupq/" ;; "us-east"|"us-east-red") URL_PREFIX="https://sf16-va.tiktokcdn.com/obj/eden-va2/100upeupq/" ;; *) URL_PREFIX="https://lf3-static.bytednsdoc.com/obj/eden-cn/100upeupq/" ;; esac; ASSET_PREFIX="${URL_PREFIX}" /opt/gem/browser-ctl.sh install ${BROWSER_SOURCE} # buildkit
# 2025-11-04 00:18:13 11.26KB 复制新文件或目录到容器中
COPY config/browser-ctl.sh /opt/gem/browser-ctl.sh # buildkit
# 2025-11-04 00:18:13 0.00B 定义构建参数
ARG BROWSER_SOURCE=rs
# 2025-11-04 00:18:13 2.33MB 执行命令并创建新的镜像层
RUN |5 REGION=china-north-lf TARGETARCH=amd64 APT_MIRROR_HOST= WEBSOCAT_URL= NOVNC_URL=https://github.com/novnc/noVNC/archive/refs/tags/v1.4.0.zip /bin/sh -c set -eux; wget -O /tmp/novnc.zip $NOVNC_URL; unzip -q /tmp/novnc.zip -d /tmp/novnc; mv /tmp/novnc/noVNC-1.4.0 /opt/novnc; cp /opt/novnc/vnc.html /opt/novnc/index.html; rm /tmp/novnc.zip # buildkit
# 2025-11-04 00:18:10 0.00B 定义构建参数
ARG NOVNC_URL=https://github.com/novnc/noVNC/archive/refs/tags/v1.4.0.zip
# 2025-11-04 00:18:10 7.25MB 执行命令并创建新的镜像层
RUN |4 REGION=china-north-lf TARGETARCH=amd64 APT_MIRROR_HOST= WEBSOCAT_URL= /bin/sh -c set -eux; _websocat_url="${WEBSOCAT_URL}"; if [ -z "${_websocat_url}" ]; then ARCH_STRING=""; case "${TARGETARCH}" in "amd64") ARCH_STRING="x86_64" ;; "arm64") ARCH_STRING="aarch64" ;; *) echo "Unsupported architecture for websocat: ${TARGETARCH}"; exit 1 ;; esac; _websocat_url="https://github.com/vi/websocat/releases/download/v1.13.0/websocat.${ARCH_STRING}-unknown-linux-musl"; fi; wget -O /usr/local/bin/websocat "${_websocat_url}"; chmod +x /usr/local/bin/websocat # buildkit
# 2025-11-04 00:18:07 0.00B 定义构建参数
ARG WEBSOCAT_URL=
# 2025-11-04 00:18:07 752.90MB 执行命令并创建新的镜像层
RUN |3 REGION=china-north-lf TARGETARCH=amd64 APT_MIRROR_HOST= /bin/sh -c set -eux; if [ -n "${APT_MIRROR_HOST}" ]; then cp /etc/apt/sources.list /etc/apt/sources.list.orig; sed -i -E -e "s;//([^/]*\.)?(ubuntu\.com|debian\.org);//${APT_MIRROR_HOST};g" /etc/apt/sources.list; fi; apt-get update; apt-get install -y --no-install-recommends wget ca-certificates libcairo2 libxcb1 libxrandr2 libxv1 zip unzip curl xdotool xclip libgtk-3-0 python3-tk python3-dev gnome-screenshot tigervnc-standalone-server x11-xserver-utils openbox nginx gettext netcat-openbsd; apt-get install -y --no-install-recommends fonts-noto-color-emoji fonts-arphic-ukai fonts-arphic-uming fonts-wqy-zenhei xfonts-intl-chinese xfonts-wqy fonts-ipafont-mincho fonts-ipafont-gothic fonts-takao-mincho fonts-unfonts-core fonts-wqy-microhei fonts-indic; fc-cache -fv # buildkit
# 2025-11-04 00:18:07 0.00B 定义构建参数
ARG APT_MIRROR_HOST=
# 2025-11-04 00:18:07 0.00B 设置环境变量 DEBIAN_FRONTEND
ENV DEBIAN_FRONTEND=noninteractive
# 2025-11-04 00:18:07 0.00B 定义构建参数
ARG TARGETARCH=amd64
# 2025-11-04 00:18:07 0.00B 定义构建参数
ARG REGION=china-north-lf
# 2025-10-01 15:05:10 0.00B
/bin/sh -c #(nop) CMD ["/bin/bash"]
# 2025-10-01 15:05:09 77.87MB
/bin/sh -c #(nop) ADD file:32d41b6329e8f89fa4ac92ef97c04b7cfd5e90fb74e1509c3e27d7c91195b7c7 in /
# 2025-10-01 15:05:07 0.00B
/bin/sh -c #(nop) LABEL org.opencontainers.image.version=22.04
# 2025-10-01 15:05:07 0.00B
/bin/sh -c #(nop) LABEL org.opencontainers.image.ref.name=ubuntu
# 2025-10-01 15:05:07 0.00B
/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH
# 2025-10-01 15:05:07 0.00B
/bin/sh -c #(nop) ARG RELEASE
镜像信息
{
"Id": "sha256:9acc2d2ced30697c6d27a25f0d2de5f010a353f1b2f9f262358f34c3aed61dde",
"RepoTags": [
"cube-sandbox-image.tencentcloudcr.com/demo/aio-sandbox-envd-openclaw:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/cube-sandbox-image.tencentcloudcr.com/demo/aio-sandbox-envd-openclaw:latest"
],
"RepoDigests": [
"cube-sandbox-image.tencentcloudcr.com/demo/aio-sandbox-envd-openclaw@sha256:421157836f51a7b8f16005e57f3aa88dd6adc8bb5be411a7bce4205414584495",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/cube-sandbox-image.tencentcloudcr.com/demo/aio-sandbox-envd-openclaw@sha256:421157836f51a7b8f16005e57f3aa88dd6adc8bb5be411a7bce4205414584495"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-05-24T13:19:54.204909521+08:00",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"18789/tcp": {},
"49983/tcp": {},
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"DEBIAN_FRONTEND=noninteractive",
"USER=gem",
"USER_UID=1000",
"USER_GID=1000",
"DISPLAY=:99.0",
"DISPLAY_WIDTH=1280",
"DISPLAY_HEIGHT=1024",
"DISPLAY_DEPTH=24",
"XDG_RUNTIME_DIR=/tmp/runtime-gem",
"BROWSER_EXECUTABLE_PATH=/usr/local/bin/browser",
"BROWSER_REMOTE_DEBUGGING_PORT=9222",
"BROWSER_COMMANDLINE_ARGS=--disable-backgrounding-occluded-windows --disable-background-timer-throttling --disable-blink-features=AutomationControlled --disable-dev-shm-usage --disable-external-intent-requests --disable-features=IPH_DesktopCustomizeChrome,IsolateOrigins,site-per-proces,Translate --disable-focus-on-load --disable-gpu --disable-infobars --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-site-isolation-trials --disable-web-security --disable-window-activation --mute-audio --no-default-browser-check --no-first-run --noerrdialogs --remote-allow-origins=* --remote-debugging-port=9222 --suppress-message-center-popups --start-maximized",
"BROWSER_EXTRA_ARGS=",
"DNS_OVER_HTTPS_TEMPLATES=",
"LOG_DIR=/var/log/gem",
"JWT_PUBLIC_KEY=",
"VNC_SERVER_PORT=5900",
"WEBSOCKET_PROXY_PORT=6080",
"GEM_SERVER_PORT=8088",
"MCP_SERVER_PORT=8089",
"PUBLIC_PORT=8080",
"AUTH_BACKEND_PORT=8081",
"WAIT_PORTS=8091,8079",
"WAIT_TIMEOUT=300",
"WAIT_INTERVAL=0.25",
"MCP_HUB_PORT=8079",
"SANDBOX_SRV_PORT=8091",
"JUPYTER_LAB_PORT=8888",
"CODE_SERVER_PORT=8200",
"MCP_SERVER_BROWSER_PORT=8100",
"TINYPROXY_PORT=8118",
"MAX_SHELL_SESSIONS=50",
"LANG=en_US.UTF-8",
"TZ=Asia/Singapore",
"LANGUAGE=en_US:en",
"LC_ALL=en_US.UTF-8",
"PUPPETEER_EXECUTABLE_PATH=/usr/local/bin/browser",
"PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true",
"BROWSER_NO_SANDBOX=",
"BROWSER_USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36",
"UV_TOOL_BIN_DIR=/usr/local/bin/",
"UV_TOOL_DIR=/usr/local/share/uv/tools",
"DISABLE_JUPYTER=false",
"DISABLE_CODE_SERVER=false",
"OPENCLAW_OPEN_BROWSER=true",
"OPENCLAW_DEFAULT_MODEL=deepseek/deepseek-v4-flash"
],
"Cmd": [
"/usr/local/bin/aio-with-envd.sh"
],
"Healthcheck": {
"Test": [
"CMD-SHELL",
"nc -z localhost ${BROWSER_REMOTE_DEBUGGING_PORT} || exit 1"
],
"Interval": 10000000000,
"Timeout": 5000000000,
"Retries": 8
},
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.version": "22.04",
"version": "1.0.0.152"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 6738445158,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/57ee64ba8909eb91f240b8a57388cebaf5855d3f61098c7a674c1dd8138efb31/diff:/var/lib/docker/overlay2/dd12a9e287d780b1cf7b01b7706a5740b0ec1273cd8245c774f6517da78fbf64/diff:/var/lib/docker/overlay2/d3d24ddca546556094ecfa73070f3666ff59746506c41feac7f1d773d3cc5c99/diff:/var/lib/docker/overlay2/41c0d32725ed3774adc1421a6efa99d4765a8488080f99d5c5b4f30a85ca5024/diff:/var/lib/docker/overlay2/4581db747c0a911e907d27e8121981f74243e7a582ffa23b96601b8878a42939/diff:/var/lib/docker/overlay2/ed0566e9886febed9821e4d1faf2babe76269deed516b5c90ddd8295a43b8d59/diff:/var/lib/docker/overlay2/0ff3058e5415b11fab5a9d2320bfdb6e01293664f2738a72182a237f38ace1a7/diff:/var/lib/docker/overlay2/d717a761d048085a67be6a426209f8763ffb08ff5f004fc5499894c62a41350b/diff:/var/lib/docker/overlay2/dc4452bd524354062a13f6715ef1c997225666904d5068b003f940e12a5757de/diff:/var/lib/docker/overlay2/935e65abef79b8152871b5cf64af1f1543d4ef59c41a744895467bce43d71280/diff:/var/lib/docker/overlay2/af512b2b796a0d02af95632567356f1874c7d5f4d8f803971c27ef1a691c35cb/diff:/var/lib/docker/overlay2/7ea76084b1d4b8b58518533d3a2e60d9cdb30ca11e445100263de19fcb062771/diff:/var/lib/docker/overlay2/f5c8afacdfa644ba563d7300d26a37246819e6612d1333924eff4a1bc050ec46/diff:/var/lib/docker/overlay2/cb6e3478619bdc1d8f82589e5af3bd1b5d8f7c8df9faf7dcf759dfa68e79d87a/diff:/var/lib/docker/overlay2/888218ea93b77ae296eccb2a5dbb1f6c95457ead92fcd7789d0d17e505a9a228/diff:/var/lib/docker/overlay2/0fc174690bafcbff7409acaa66702f92f719275bf525c568fad3996ad4aea211/diff:/var/lib/docker/overlay2/9253745928ada866b83a2f54e2842f549bd7b5a29ae9619c04193dcce6632223/diff:/var/lib/docker/overlay2/e1fc3f2fc4679b73d3e11f3e65f1a7d4739d46dc60f55ddec7d81846afecb7c3/diff:/var/lib/docker/overlay2/45653b897d5fb7b1155e23c7a77ee7f474e1090113bc05be7ea3d589b34c78d7/diff:/var/lib/docker/overlay2/a162fa130fa7fde0b9d37bf35e0cfd04439cf526f1e6a0a621eb7384f30eba21/diff:/var/lib/docker/overlay2/6430cf93a93abffe383970b91f15b0942d69814db1ad7ac4ec4710e5f06a6df9/diff:/var/lib/docker/overlay2/170e516b4a692320c4d3182d53df76bab55af055554e8b17625c13678484b2b4/diff:/var/lib/docker/overlay2/686715be9b7e9fc04523adc8a6ffd460aff42c5bc2a5216e44845a0fc434ecab/diff:/var/lib/docker/overlay2/c4f97cc2addc9fd9f1b570c6fb863684d5628fab44ef4d61ab6052bbe64a9245/diff:/var/lib/docker/overlay2/51c1810526697e51636fc7ee8c9e479ec968573fe2db2c9ba4036f3fb7919d9c/diff:/var/lib/docker/overlay2/346f84ca32e9708faac8362b457ef364cf7475a86d03036c953eb353de1cdf55/diff:/var/lib/docker/overlay2/5d3ec3aaf648c5008f45949fcbeda264feffcad8130e39701f0a15c0b68f88b7/diff:/var/lib/docker/overlay2/55db5552ae48a1e5423c82cf0f2a3cb3b4c388afe80837be5e8fc08b4328c12b/diff:/var/lib/docker/overlay2/c9d6f69843d33b7cb4b69da4b56d2262e2cfb049f2515502078d1b06a5a1d71f/diff:/var/lib/docker/overlay2/70fbdc2fb02d2a58e2585ab1f02f105756fac6f97fe5e14e229ec2f0bd9c7db8/diff:/var/lib/docker/overlay2/68602ac8a7765d6754f1eac746ec132b5a8c85443e6bc77c8d3a1a18a00f7dc2/diff:/var/lib/docker/overlay2/29eea68dff615da9aa58116064114c986dd0b7d46dceadc777da9fb4848970ac/diff:/var/lib/docker/overlay2/d4a6f811fd90bd07e5f7568f945e723080b946c5e8672cb3faf90228c5d59e9c/diff:/var/lib/docker/overlay2/d6dbfc6863219561c490e8368256e70dac8d7004f8b2ff02fb153b89dbd51a82/diff:/var/lib/docker/overlay2/7e290d8e693332c491f49734369f1447e2c737750281ea56b600939b5fe300bf/diff:/var/lib/docker/overlay2/a4627342a0fdf99f85107687871cb116d6dd4a16951bc0cae6213651eea406b1/diff:/var/lib/docker/overlay2/354e01a70614fa14ac6475efd86f6158243b503f2dd8195e2ba4a3d29359537e/diff:/var/lib/docker/overlay2/7c32efa95f9e60dfce9bbbf01f4996e5f8cf1d5bb8a4fcdd99d5a8c7c4597d49/diff:/var/lib/docker/overlay2/d37103f63084910b28f5b25fa07a8b68d52608f1f7ac5408b3e72a7ce3b57845/diff:/var/lib/docker/overlay2/6c7cc0d477c9be79116b9dc3bd8807bfd6aa7fc1fd787a4aad6c808ca544685e/diff:/var/lib/docker/overlay2/acb192a59d2394640fd1ab702823e89b6d2a7696f767ab0e336e20a936abc46f/diff:/var/lib/docker/overlay2/be03870759d256fb0e894f8090b023305607510d4c4f40717d9548e404dab16e/diff:/var/lib/docker/overlay2/4edab3f5bd011a4a47f66cdd4ce43ed806037f1eebf3eeb4d831405d21c48d96/diff:/var/lib/docker/overlay2/7185d7653d12facc0e348536dcfdcd4397d8eaf07f68209030cd1aadb658a175/diff:/var/lib/docker/overlay2/2baf31f4d65e8c7965c1af25d01ae402f340f91dab0808b6010b24b858fae8e1/diff:/var/lib/docker/overlay2/263e4d99e1ab4933ee4543fdef14c1f40fc71deae53f96534f743fc38ea32b8d/diff:/var/lib/docker/overlay2/4a5e940cd9d80db8939c3692e83daa595fd82e110ceee9ecb19a48b31c8ca0b1/diff:/var/lib/docker/overlay2/7531c1926a2d2805ad82b1bc01a4f5e98873c8cf4f97550c08d37b976b3d53d4/diff:/var/lib/docker/overlay2/c814128f8d92ff3fb1a5cc801b802a47570296c96c9ff88d7fcd67b10c5296b8/diff:/var/lib/docker/overlay2/384bd48d84287c5545fb7066653293b13cb53038ec2c1d5ef0ecf8200e42f6d8/diff:/var/lib/docker/overlay2/507ec5cc7489f79ec5654036db41dd1b83af1c847294552fd11ce2279f0029c7/diff:/var/lib/docker/overlay2/feb7f7821eb97fe47f13354c854336220c4a9c46d5b10fb03b123b8eb18f020f/diff:/var/lib/docker/overlay2/7bebe47ad58c1b979dc3dcc7c99fb0f004529e4c42933ada64248f6b0da3efd3/diff:/var/lib/docker/overlay2/afbc0b722dfc06f7e6e4da131353bce7130e6214140b00fa755b1c413f7284eb/diff:/var/lib/docker/overlay2/7cc914551aa6f64f947a407505588c9bc0b2eb81c30284d861e05b0733fd276d/diff:/var/lib/docker/overlay2/86e540965a9c9710bbdd2c3dd233f2b03d3ebc71c986decd4b24a9590ce15ada/diff:/var/lib/docker/overlay2/c62efbc69702355a8cca32b90e90ba4c8888aa46d611f529e6ac8bc7547edffa/diff:/var/lib/docker/overlay2/071ee6d11b03ec7fff0f97fa897e5c83e21a5455b9e997de374b380f50c6e1dd/diff:/var/lib/docker/overlay2/d05e89fa19d7cdeb671ad9bc01c85cda8386a2867f50b074dff3ed9a50d7eebc/diff:/var/lib/docker/overlay2/b457169c85c370f91f074efb22bb95953df995338fc3947d5fb1fa0e5167b33d/diff:/var/lib/docker/overlay2/0d4de8941a33d9620d11fba4f0d1f2f87b0fb131212388060af3abb9848fb25f/diff:/var/lib/docker/overlay2/6295cc565f862dd557d277bf7b51222724d58ef504401cebdd881a8872af620a/diff:/var/lib/docker/overlay2/bd1a60ad14ea54738b2ef68a1d71bb4ded10aaf816146b7198a9b64ab7ec5fa6/diff:/var/lib/docker/overlay2/23e4fcae87bb296f29f5df447735d4edc0ba6f624e03bdb9fd16625631e1647c/diff:/var/lib/docker/overlay2/33025f4c2895c2863ce4147a497b55ad7f0549cc3ae4db8a01318b1a78d84e88/diff:/var/lib/docker/overlay2/d66f8815b761456f60ed94e6ff7aa3210908a404e4daa4cc7d938d5b41b040f6/diff:/var/lib/docker/overlay2/812ff33c881b6a09922a722fca0b19d9637383b35380219aea4d3b715028ac09/diff:/var/lib/docker/overlay2/2d66f008037f048d8133fd0c352588a02e5add65384bc691b609ac5de92d4beb/diff:/var/lib/docker/overlay2/884f45ef8e1d1ad16aca7baab496db59b5fc5c3ef68943e6661fc25732ffdcf4/diff:/var/lib/docker/overlay2/faac8e7df6a4d7cf69c59c49acce624c01cceb7d9d69ec08fceff85edf91aa6e/diff:/var/lib/docker/overlay2/dc996ba94099eff271bef2492ea5fd93226750e0652913277189b12b8da7f135/diff:/var/lib/docker/overlay2/60f3f77904ddce8c42c34905837f94947c371daaddc9ae442c907b76452ce081/diff",
"MergedDir": "/var/lib/docker/overlay2/ca38654733c840c16aff760b7f5a493a079efe29351ba7b133909017a8fbbf55/merged",
"UpperDir": "/var/lib/docker/overlay2/ca38654733c840c16aff760b7f5a493a079efe29351ba7b133909017a8fbbf55/diff",
"WorkDir": "/var/lib/docker/overlay2/ca38654733c840c16aff760b7f5a493a079efe29351ba7b133909017a8fbbf55/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:767e56ba346ae714b6e6b816baa839051145ed78cfa0e4524a86cc287b0c4b00",
"sha256:88ca97b5b0d2a210004d6d5e8d62d95c62ed33a23472a27112699ad00ce5f818",
"sha256:23adab4fd6c65d8060ea28310fb5c1bcd6d0ca6722ab9ef3525e9003d5e48da7",
"sha256:7cf73c97e48d19b4bc88bab9d4e3ff73388391a584a7fcdf50b59bc44474177f",
"sha256:c0b2c92439cf5f010820b68caa4cd6bbcae4b95de2678250715860efefa6ad2a",
"sha256:a37b3d241e215198fe50dfb1f6aa0f50cb43640b83979a92fccbfd3d5a53a33f",
"sha256:c6688ab846ef657465b2734e7d2718692326888336baabc6b85def9e10e8d93a",
"sha256:83a9824ab0257e085bdf1966d1af5fa067906a15e3da4b240c9a100d40f89363",
"sha256:4ca075c6e25199b9d08d9a08ad803c7e15735067bc85a5940fb4c0b7bc0e1710",
"sha256:4841812e82bd7595d5990d720b340764cf413de242a3549372ae29a54c643d5c",
"sha256:0b382d6a406bff7d711019ab4f419017531e73494150947c1d75ce1b59396bcf",
"sha256:9783da0e6ff60ab78fccc35f7269928a1359626881079a38b88c310b55c72cbd",
"sha256:0b951b5ff40e1c0c1e7b31059a9b84f96f64c3d7e31f0ded3f356efc9e1a6064",
"sha256:a426153bb833e19d0caa84657d13cd4215f57d984233e2d993357c8d796705c0",
"sha256:5e8ae7a83f8e89dc0cfd57dd7844c3e11f7a1e675857ec8054e21ffc69b368f4",
"sha256:ae883d6ecb6d7f1edc05a61a226a5a1f594ac428eaaab2ca591ef210cb6d10a6",
"sha256:0e32819e954979ca9707a8e6fa512654e2b02457dfa590a6010d242fa509c741",
"sha256:63670a674091449026983420e30803d042fe1141621555f737a8a4f710ff48f0",
"sha256:ba7164d2c5642700cb35f37342a01dface4c3b3e4957878168cb461b15703a79",
"sha256:d9a87da0b151fb408148645d7941bfadad207ef9d70c30edcbba2847724cc415",
"sha256:5f51ba26fac93630476e9d35b20ff3a456acd75236aed0d77a1697d967878ad8",
"sha256:ff811d055750a8ae301827022b11ab9731f023687c31b94d22b07ce886107ee6",
"sha256:0416343fb03bff21db72c0607d527180a0950d3c04669dd976e59e98568f79d2",
"sha256:6edc3e8ddee804b056e6b60cf12407eb411bf4bd41ae9e44ee7d231fab02d347",
"sha256:aa504355e3387401846bfa13908d730132844affafca74768822a5842ea11972",
"sha256:b4a039563e75ba0d745545a5cd9ba34242502fdeef300f1b7d96932fd3c8eb14",
"sha256:d84753639907463a049b070c7c25b5f8c86e9890d228fda69ff64a6fc9439d94",
"sha256:126456083e2a7e5f0b8947b035c577c27410f0344afc4b10ed33fc8c782e67b8",
"sha256:0f625b37a73ffafa50b257266309f11b6b53dc64b788da9553a673cb52f47b63",
"sha256:5af34389cb180244fff4fc9bb216027ca8800babd9448d53579039d618f0c17f",
"sha256:48aa04d99fa60d40b31249bba96f3d821188617e37b680da8d0f75bb486eb1d2",
"sha256:cf16d137f8cc02f97258b746a77401ba55b0ef59badaeb8e672b18ed0e31e897",
"sha256:c1c56fc9fda85bc7bad20a988cc079f86d1d5212c6dab494322931bc294852d1",
"sha256:b3a9b44c6df6b221476b79f5651dc0a1d9cb109e361e83e7593c9eac3a4d214e",
"sha256:3c6e0776e5cc6961fa61d2afeb5cd485c1378384e174e6e157bcfe3ff45da23b",
"sha256:3cc548fffe4c925086f778896134abb21d38bba15bceed0a89571dbc6bb8cac8",
"sha256:38ac6e57ed7426be0c0f3868de719b8d80a653e3963e1c779c373a3bc36472fd",
"sha256:2eef78ebf6b764997bf8786236eb2d9d3d18175ffdbc14ded6a1c0308f65904c",
"sha256:1d8ae3ccb11d9a570367557330631b0a96eb2c6f78205cfc54ae7b4c85d4d51b",
"sha256:9cdcd06156db3c7e9f53bf4bfa44f9594f4075f8e6a3e422da997513ece71d09",
"sha256:4aad89ab3a7c4b4702192ddf6aba250da1f41146b8a54ee16bada2ae9db2952d",
"sha256:bfe0194b5dfa88a465f0d46bb6fe743e6c2c9bce5927cf5da8818c3bf48a19de",
"sha256:29cabecd853e441385155f482b1be9addea93afbee9847e7acc01366f835a60a",
"sha256:de29b456489e85daa1b8007acf7fbf218c64fddd3dba233a5cf77638886015dd",
"sha256:410b56843e429abf99943d99caf27742f32f74788fc77a538ffade2d7b4023ad",
"sha256:9ea61fd10c1f0dda87f258bfbe2c3ce0f117cb2da69c3a89a39b689df86092e5",
"sha256:02b2e74d8492684da5ebb94e158251741392ce9dfba8797f0d195aaa0d14ba01",
"sha256:65a3c258849f3123bcf5157cafa93c6f68861d98b9455057ce41f504a0a64e43",
"sha256:8c4cc86711504e2e4d70c75df2573d1917b0ffb62dff94b687042d99ca74364a",
"sha256:907f52d6123d2d3bd725f7f26c700be6aebadbf8de58777b1986739a8e34ddde",
"sha256:dbb670b0305ae660d5a362f3b812f6f5e83a2cbbfc86f5d4016e2fc7b4eb68d6",
"sha256:3527e910e0e044ec6b44e1928dac56d82701de74a1321eb02447c9655be43281",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:63da77867cc6a9d266b4643fac93931b82d2c9e5b05e4b6d2888d989616168bc",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:4ddfff081f65b5f7e8f5ce2733247c68a3b4176d43226603b835ced925401809",
"sha256:13fc895f5e4a64f94005f86dc78cdad16608c1947e28dd1879016b50a414e867",
"sha256:a1353a7c78bba69434b28076e65770b74e69d274b3bbf45c96dce37e62fb0063",
"sha256:91241e61a8de975504377172ec5e233fe657412474e05ed5af54c40bf549fe75",
"sha256:8bd3d979094605c4cf16836135b7771091b67c15f56175a13b6a69bf37c6bb7d",
"sha256:731918770fbe5dc9e1f19200948a68ad7972e2a76754afc6bca288ae11bfd490",
"sha256:82bdb79871c72ece8f32ecf712c0763e6aca7b0e0e6568dd957ebc6485d172a0",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:0d90bc4b483f5ccab241dd6674348b84b71eadafb24d432d7303fb38136929e0",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:e27f8aaa60f59008373cd4dbbe21658049a597821574be74903b5a14a8901555",
"sha256:8cdfd906720ff8d43617fe7dce3e59464aaace91ce075a236c8622af1e618933",
"sha256:389f1bb87fa0e14d3a229da5d80c226e0cbb050aa399029dbc0aa91013282eaa",
"sha256:b8681b36f61560729e0203b2b0d6145484943be784ce147cc641da1fb41e19b0",
"sha256:08f0a70ff4dbe408ca0366d6ee58cef3d0bdc9401f45ac736c548e1c4f0b5d53",
"sha256:11337f424a95ffac0b70fde2f82dbe40ebbf5c196cc09f1d6f932093c945066f",
"sha256:995433dbe6ea78bb7ebbb039a9b76f0310f584bf415581349f23a9f0b04be68d",
"sha256:67a9d53cef4fb7d2ea92ab80107950bdc81f40811a3058602448a7c550197ec7"
]
},
"Metadata": {
"LastTagTime": "2026-10-22T18:53:12.203223177+08:00"
}
}