logo
ghcr.io/hkuds/deeptutor:1.5.6
linux/amd64 ghcr.io

这是一个用于深度学习辅导的Docker镜像,提供相关的教学资源和工具,帮助用户学习深度学习相关知识和技能。

20
浏览次数
1.27GB
镜像大小
国内镜像
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6
源镜像
ghcr.io/hkuds/deeptutor:1.5.6
镜像ID
sha256:8fcb80cc34eac84421a598bb502a5e6f57fbf361626967cd03d1e9e50e8f4d13
镜像 TAG
1.5.6
镜像大小
1.27GB
平台架构
linux/amd64
镜像源
ghcr.io
CMD
启动入口
/app/entrypoint.sh
工作目录
/app
OS/平台
linux/amd64
镜像创建
2026-07-28T18:00:10.28105423Z
同步时间
2026-07-29 09:00
浏览量
20 次
贡献者
🔌 开放端口 2
3782/tcp 8001/tcp
⚙️ 环境变量 10
KeyValue
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 0
LANG=C.UTF-8 1
GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D 2
PYTHON_VERSION=3.11.15 3
PYTHON_SHA256=272179ddd9a2e41a0fc8e42e33dfbdca0b3711aa5abf372d3f2d51543d09b625 4
PYTHONDONTWRITEBYTECODE=1 5
PYTHONUNBUFFERED=1 6
PYTHONIOENCODING=utf-8 7
NODE_ENV=production 8
DEEPTUTOR_IGNORE_PROCESS_ENV_OVERRIDES=1 9
🏷️ 镜像标签 10
KeyValue
DeepTutor: AI-Powered Personalized Learning Assistant description
DeepTutor Team maintainer
2026-07-28T17:57:11.958Z org.opencontainers.image.created
DeepTutor: Lifelong Personalized Tutoring. https://deeptutor.info/. org.opencontainers.image.description
Apache-2.0 org.opencontainers.image.licenses
f2aa49f42e67dbfbb9ce6b95e3f62ccd04bb852a org.opencontainers.image.revision
https://github.com/HKUDS/DeepTutor org.opencontainers.image.source
DeepTutor org.opencontainers.image.title
https://github.com/HKUDS/DeepTutor org.opencontainers.image.url
1.5.6 org.opencontainers.image.version
🛡️ 镜像安全扫描
debian 13.6 Trivy 2026-07-29 09:00 查看完整报告
145
低危 LOW
130
中危 MEDIUM
82
高危 HIGH
7
严重 CRITICAL
受影响目标 (3)
ghcr.io/hkuds/deeptutor:1.5.6 (debian 13.6) debian Node.js node-pkg Python python-pkg

Docker拉取命令

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6  ghcr.io/hkuds/deeptutor:1.5.6

Containerd拉取命令

ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6
ctr images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6  ghcr.io/hkuds/deeptutor:1.5.6

Shell快速替换命令

sed -i 's#ghcr.io/hkuds/deeptutor:1.5.6#swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6#' deployment.yaml

Ansible快速分发-Docker

#ansible k8s -m shell -a 'docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6 && docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6  ghcr.io/hkuds/deeptutor:1.5.6'

Ansible快速分发-Containerd

#ansible k8s -m shell -a 'ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6 && ctr images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6  ghcr.io/hkuds/deeptutor:1.5.6'

镜像构建历史


# 2026-07-29 02:00:10  0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/app/entrypoint.sh"]
                        
# 2026-07-29 02:00:10  0.00B 指定检查容器健康状态的命令
HEALTHCHECK {Test:[CMD-SHELL python /app/healthcheck.py] Interval:30s Timeout:10s StartPeriod:1m0s StartInterval:0s Retries:3}
                        
# 2026-07-29 02:00:10  0.00B 声明容器运行时监听的端口
EXPOSE [3782/tcp 8001/tcp]
                        
# 2026-07-29 02:00:10  358.00B 执行命令并创建新的镜像层
RUN /bin/sh -c cat > /app/healthcheck.py <<'EOF'
from pathlib import Path
import json
import urllib.request

port = 8001
settings_path = Path("/app/data/user/settings/system.json")
try:
    settings = json.loads(settings_path.read_text(encoding="utf-8"))
    port = int(settings.get("backend_port") or port)
except Exception:
    pass

urllib.request.urlopen(f"http://localhost:{port}/", timeout=5).close()
EOF # buildkit
                        
# 2026-07-29 02:00:10  3.44KB 执行命令并创建新的镜像层
RUN /bin/sh -c sed -i 's/\r$//' /app/entrypoint.sh && chmod +x /app/entrypoint.sh # buildkit
                        
# 2026-07-29 02:00:10  3.44KB 执行命令并创建新的镜像层
RUN /bin/sh -c cat > /app/entrypoint.sh <<'EOF'
#!/bin/bash
set -e

echo "============================================"
echo "🚀 Starting DeepTutor"
echo "============================================"

export DEEPTUTOR_IGNORE_PROCESS_ENV_OVERRIDES=1

# Docker is JSON-driven. Ignore runtime env names even if the host or a stale
# Compose environment provides them; the entrypoint re-exports values from
# data/user/settings/*.json below.
for key in \
    BACKEND_PORT \
    FRONTEND_PORT \
    NEXT_PUBLIC_API_BASE_EXTERNAL \
    NEXT_PUBLIC_API_BASE \
    CORS_ORIGIN \
    CORS_ORIGINS \
    DISABLE_SSL_VERIFY \
    CHAT_ATTACHMENT_DIR \
    AUTH_ENABLED \
    NEXT_PUBLIC_AUTH_ENABLED \
    AUTH_USERNAME \
    AUTH_PASSWORD_HASH \
    AUTH_TOKEN_EXPIRE_HOURS \
    AUTH_COOKIE_SECURE \
    POCKETBASE_URL \
    POCKETBASE_PORT \
    POCKETBASE_EXTERNAL_URL \
    POCKETBASE_ADMIN_EMAIL \
    POCKETBASE_ADMIN_PASSWORD \
    DEEPTUTOR_API_BASE_URL \
    DEEPTUTOR_AUTH_ENABLED; do
    unset "$key"
done

# Initialize user data directories if empty
echo "📁 Checking data directories..."
echo "   Ensuring runtime settings and workspace layout..."
python -c "
from pathlib import Path
from deeptutor.services.setup import init_user_directories
init_user_directories(Path('/app'))
" 2>/dev/null || echo "   ⚠️ Directory initialization skipped (will be created on first use)"

# Idempotent: re-chown /app/data so the unprivileged `deeptutor` user (UID 1000)
# owns it. Cheap on no-op; the only first-start cost is one stat per file.
chown -R deeptutor:deeptutor /app/data 2>/dev/null || true

echo "⚙️  Loading runtime JSON settings..."
eval "$(python - <<'PY'
import shlex
from deeptutor.services.config import export_runtime_settings_to_env

for key, value in export_runtime_settings_to_env(overwrite=True).items():
    print(f"export {key}={shlex.quote(str(value))}")
PY
)"

export BACKEND_PORT=${BACKEND_PORT:-8001}
export FRONTEND_PORT=${FRONTEND_PORT:-3782}

# DEEPTUTOR_API_BASE_URL and DEEPTUTOR_AUTH_ENABLED are exported by the
# export_runtime_settings_to_env eval above (see render_environment in
# deeptutor/services/config/runtime_settings.py). web/proxy.ts reads them at
# request time to rewrite /api/* and /ws/* to the backend and to gate the login
# redirect. Keeping them in the single JSON-backed exporter means the Docker and
# `deeptutor start` paths stay in sync.
echo "📌 API Base URL (proxy): ${DEEPTUTOR_API_BASE_URL:-http://localhost:${BACKEND_PORT}}"
echo "📌 Auth enabled: ${DEEPTUTOR_AUTH_ENABLED:-false}"

echo "📌 Backend Port: ${BACKEND_PORT}"
echo "📌 Frontend Port: ${FRONTEND_PORT}"

echo "============================================"
echo "📦 Configuration loaded from:"
echo "   - data/user/settings/system.json"
echo "   - data/user/settings/auth.json"
echo "   - data/user/settings/integrations.json"
echo "   - data/user/settings/model_catalog.json"
echo "   - data/user/settings/main.yaml"
echo "   - data/user/settings/agents.yaml"
echo "============================================"

# Hand off to supervisord as PID 1. The daemon-level config deliberately omits
# `user=` so supervisord inherits PID 1's UID and stays portable across rootful
# and rootless-keep-id runtimes; children drop to the deeptutor user via
# per-program `user=`. Full rationale lives next to the [supervisord] section
# in the build step that writes /etc/supervisor/supervisord.conf.
exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
EOF # buildkit
                        
# 2026-07-29 02:00:10  278.00B 执行命令并创建新的镜像层
RUN /bin/sh -c sed -i 's/\r$//' /app/start-frontend.sh && chmod +x /app/start-frontend.sh # buildkit
                        
# 2026-07-29 02:00:09  278.00B 执行命令并创建新的镜像层
RUN /bin/sh -c cat > /app/start-frontend.sh <<'EOF'
#!/bin/bash
set -e

FRONTEND_PORT=${FRONTEND_PORT:-3782}
FRONTEND_HOST=${FRONTEND_HOST:-0.0.0.0}
echo "[Frontend] 🚀 Starting Next.js frontend on ${FRONTEND_HOST}:${FRONTEND_PORT}..."

export PORT=${FRONTEND_PORT}
export HOSTNAME=${FRONTEND_HOST}
exec node /app/web/server.js
EOF # buildkit
                        
# 2026-07-29 02:00:09  1.04KB 执行命令并创建新的镜像层
RUN /bin/sh -c sed -i 's/\r$//' /app/start-backend.sh && chmod +x /app/start-backend.sh # buildkit
                        
# 2026-07-29 02:00:09  1.04KB 执行命令并创建新的镜像层
RUN /bin/sh -c cat > /app/start-backend.sh <<'EOF'
#!/bin/bash
set -e

BACKEND_PORT=${BACKEND_PORT:-8001}
BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}

echo "[Backend]  🚀 Starting FastAPI backend on ${BACKEND_HOST}:${BACKEND_PORT}..."

# Run uvicorn directly - the application's logging system already handles:
# 1. Console output (visible in docker logs)
# 2. File logging to data/user/logs/ai_tutor_*.log
#
# BACKEND_HOST defaults to 0.0.0.0 (LAN-reachable, matches bridge-mode
# port publishing). Set BACKEND_HOST=127.0.0.1 when running with
# network_mode: host to keep the backend on loopback only.
#
# --ws-max-size: chat attachments travel base64 inside one WS message; derive
# the frame cap from the configured attachment policy (system.json) so uploads
# the policy allows are not severed by uvicorn's 16MB default.
WS_MAX_SIZE=$(python -c "from deeptutor.services.config import get_ws_max_size; print(get_ws_max_size())" 2>/dev/null || echo 16777216)
exec python -m uvicorn deeptutor.api.main:app --host ${BACKEND_HOST} --port ${BACKEND_PORT} --no-access-log --ws-max-size ${WS_MAX_SIZE}
EOF # buildkit
                        
# 2026-07-29 02:00:09  548.00B 执行命令并创建新的镜像层
RUN /bin/sh -c sed -i 's/\r$//' /etc/supervisor/conf.d/programs.conf # buildkit
                        
# 2026-07-29 02:00:09  548.00B 执行命令并创建新的镜像层
RUN /bin/sh -c cat > /etc/supervisor/conf.d/programs.conf <<'EOF'
[program:backend]
command=/bin/bash /app/start-backend.sh
directory=/app
user=deeptutor
autostart=true
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
stderr_logfile=/dev/fd/2
stderr_logfile_maxbytes=0
environment=PYTHONPATH="/app",PYTHONUNBUFFERED="1"

[program:frontend]
command=/bin/bash /app/start-frontend.sh
directory=/app/web
user=deeptutor
autostart=true
autorestart=true
startsecs=5
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
stderr_logfile=/dev/fd/2
stderr_logfile_maxbytes=0
environment=NODE_ENV="production"
EOF # buildkit
                        
# 2026-07-29 02:00:09  150.00B 执行命令并创建新的镜像层
RUN /bin/sh -c sed -i 's/\r$//' /etc/supervisor/supervisord.conf # buildkit
                        
# 2026-07-29 02:00:09  150.00B 执行命令并创建新的镜像层
RUN /bin/sh -c cat > /etc/supervisor/supervisord.conf <<'EOF'
[supervisord]
nodaemon=true
logfile=/dev/null
logfile_maxbytes=0
pidfile=/tmp/supervisord.pid

[include]
files = /etc/supervisor/conf.d/programs.conf
EOF # buildkit
                        
# 2026-07-29 02:00:09  0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c mkdir -p /etc/supervisor/conf.d # buildkit
                        
# 2026-07-29 02:00:09  26.93MB 执行命令并创建新的镜像层
RUN /bin/sh -c groupadd --system --gid 1000 deeptutor     && useradd --system --uid 1000 --gid 1000 --no-create-home --shell /usr/sbin/nologin deeptutor     && chown -R deeptutor:deeptutor /app/data /app/web/.next # buildkit
                        
# 2026-07-29 02:00:07  0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c mkdir -p     data/user/settings     data/memory     data/user/workspace/memory     data/user/workspace/notebook     data/user/workspace/co-writer/audio     data/user/workspace/co-writer/tool_calls     data/user/workspace/chat/chat     data/user/workspace/chat/deep_solve     data/user/workspace/chat/deep_question     data/user/workspace/chat/deep_research/reports     data/user/workspace/chat/math_animator     data/user/workspace/chat/_detached_code_execution     data/user/logs     data/knowledge_bases # buildkit
                        
# 2026-07-29 02:00:07  1.02KB 复制新文件或目录到容器中
COPY requirements.txt ./ # buildkit
                        
# 2026-07-29 02:00:07  7.00KB 复制新文件或目录到容器中
COPY requirements/ ./requirements/ # buildkit
                        
# 2026-07-29 02:00:07  16.31KB 复制新文件或目录到容器中
COPY pyproject.toml ./ # buildkit
                        
# 2026-07-29 02:00:07  31.92KB 复制新文件或目录到容器中
COPY scripts/ ./scripts/ # buildkit
                        
# 2026-07-29 02:00:07  192.67KB 复制新文件或目录到容器中
COPY deeptutor_cli/ ./deeptutor_cli/ # buildkit
                        
# 2026-07-29 02:00:07  5.55MB 复制新文件或目录到容器中
COPY deeptutor/ ./deeptutor/ # buildkit
                        
# 2026-07-29 02:00:06  745.93KB 复制新文件或目录到容器中
COPY /app/web/public/ ./web/public/ # buildkit
                        
# 2026-07-29 02:00:06  11.14MB 复制新文件或目录到容器中
COPY /app/web/.next/static/ ./web/.next/static/ # buildkit
                        
# 2026-07-29 02:00:06  65.38MB 复制新文件或目录到容器中
COPY /app/web/.next/standalone/ ./web/ # buildkit
                        
# 2026-07-29 01:59:50  71.91KB 复制新文件或目录到容器中
COPY /usr/local/bin /usr/local/bin # buildkit
                        
# 2026-07-29 01:59:49  631.13MB 复制新文件或目录到容器中
COPY /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages # buildkit
                        
# 2026-07-29 01:57:55  236.94KB 执行命令并创建新的镜像层
RUN /bin/sh -c ln -sf /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm     && ln -sf /usr/local/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx     && node --version && npm --version # buildkit
                        
# 2026-07-29 01:57:54  11.94MB 复制新文件或目录到容器中
COPY /usr/local/lib/node_modules /usr/local/lib/node_modules # buildkit
                        
# 2026-07-29 01:57:54  124.84MB 复制新文件或目录到容器中
COPY /usr/local/bin/node /usr/local/bin/node # buildkit
                        
# 2026-07-29 01:57:53  266.26MB 执行命令并创建新的镜像层
RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends     curl     ca-certificates     bash     supervisor     libgl1     libglib2.0-0     libsm6     libxext6     libxrender1     && rm -rf /var/lib/apt/lists/* # buildkit
                        
# 2026-07-29 01:57:18  0.00B 设置工作目录为/app
WORKDIR /app
                        
# 2026-07-29 01:57:18  0.00B 设置环境变量 PYTHONDONTWRITEBYTECODE PYTHONUNBUFFERED PYTHONIOENCODING NODE_ENV DEEPTUTOR_IGNORE_PROCESS_ENV_OVERRIDES
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PYTHONIOENCODING=utf-8 NODE_ENV=production DEEPTUTOR_IGNORE_PROCESS_ENV_OVERRIDES=1
                        
# 2026-07-29 01:57:18  0.00B 添加元数据标签
LABEL maintainer=DeepTutor Team description=DeepTutor: AI-Powered Personalized Learning Assistant
                        
# 2026-07-14 10:10:44  0.00B 设置默认要执行的命令
CMD ["python3"]
                        
# 2026-07-14 10:10:44  36.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; 	for src in idle3 pip3 pydoc3 python3 python3-config; do 		dst="$(echo "$src" | tr -d 3)"; 		[ -s "/usr/local/bin/$src" ]; 		[ ! -e "/usr/local/bin/$dst" ]; 		ln -svT "$src" "/usr/local/bin/$dst"; 	done # buildkit
                        
# 2026-07-14 10:10:44  42.29MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; 		savedAptMark="$(apt-mark showmanual)"; 	apt-get update; 	apt-get install -y --no-install-recommends 		dpkg-dev 		gcc 		gnupg 		libbluetooth-dev 		libbz2-dev 		libc6-dev 		libdb-dev 		libffi-dev 		libgdbm-dev 		liblzma-dev 		libncursesw5-dev 		libreadline-dev 		libsqlite3-dev 		libssl-dev 		make 		tk-dev 		uuid-dev 		wget 		xz-utils 		zlib1g-dev 	; 		wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; 	echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; 	wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; 	GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; 	gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; 	gpg --batch --verify python.tar.xz.asc python.tar.xz; 	gpgconf --kill all; 	rm -rf "$GNUPGHOME" python.tar.xz.asc; 	mkdir -p /usr/src/python; 	tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; 	rm python.tar.xz; 		cd /usr/src/python; 	gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; 	./configure 		--build="$gnuArch" 		--enable-loadable-sqlite-extensions 		--enable-optimizations 		--enable-option-checking=fatal 		--enable-shared 		$(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') 		--with-ensurepip 	; 	nproc="$(nproc)"; 	EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; 	LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; 	LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; 	make -j "$nproc" 		"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" 		"LDFLAGS=${LDFLAGS:-}" 	; 	rm python; 	make -j "$nproc" 		"EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" 		"LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" 		python 	; 	make install; 		cd /; 	rm -rf /usr/src/python; 		find /usr/local -depth 		\( 			\( -type d -a \( -name test -o -name tests -o -name idle_test \) \) 			-o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) 		\) -exec rm -rf '{}' + 	; 		ldconfig; 		apt-mark auto '.*' > /dev/null; 	apt-mark manual $savedAptMark; 	find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' 		| awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' 		| sort -u 		| xargs -rt dpkg-query --search 		| awk 'sub(":$", "", $1) { print $1 }' 		| sort -u 		| xargs -r apt-mark manual 	; 	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; 	apt-get dist-clean; 		export PYTHONDONTWRITEBYTECODE=1; 	python3 --version; 		pip3 install 		--disable-pip-version-check 		--no-cache-dir 		--no-compile 		'setuptools==79.0.1' 		'wheel==0.46.3' 	; 	pip3 --version # buildkit
                        
# 2026-07-14 10:03:18  0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=272179ddd9a2e41a0fc8e42e33dfbdca0b3711aa5abf372d3f2d51543d09b625
                        
# 2026-07-14 10:03:18  0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.11.15
                        
# 2026-07-14 10:03:18  0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
                        
# 2026-07-14 10:03:18  3.81MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; 	apt-get update; 	apt-get install -y --no-install-recommends 		ca-certificates 		netbase 		tzdata 	; 	apt-get dist-clean # buildkit
                        
# 2026-07-14 10:03:18  0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
                        
# 2026-07-14 10:03:18  0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                        
# 2026-07-13 08:00:00  78.62MB 
# debian.sh --arch 'amd64' out/ 'trixie' '@1783900800'
                        
                    

镜像信息

{
    "Id": "sha256:8fcb80cc34eac84421a598bb502a5e6f57fbf361626967cd03d1e9e50e8f4d13",
    "RepoTags": [
        "ghcr.io/hkuds/deeptutor:1.5.6",
        "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor:1.5.6"
    ],
    "RepoDigests": [
        "ghcr.io/hkuds/deeptutor@sha256:bc355f018e7f71a94af2f06bccb76ea40b51bba75e1013365525d773bc699cad",
        "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/hkuds/deeptutor@sha256:7880e8af949c74c129014e8f0f568303ab8e7686e4022a6b7a8c2688767baaf3"
    ],
    "Parent": "",
    "Comment": "buildkit.dockerfile.v0",
    "Created": "2026-07-28T18:00:10.28105423Z",
    "Container": "",
    "ContainerConfig": null,
    "DockerVersion": "",
    "Author": "",
    "Config": {
        "Hostname": "",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "ExposedPorts": {
            "3782/tcp": {},
            "8001/tcp": {}
        },
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=C.UTF-8",
            "GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D",
            "PYTHON_VERSION=3.11.15",
            "PYTHON_SHA256=272179ddd9a2e41a0fc8e42e33dfbdca0b3711aa5abf372d3f2d51543d09b625",
            "PYTHONDONTWRITEBYTECODE=1",
            "PYTHONUNBUFFERED=1",
            "PYTHONIOENCODING=utf-8",
            "NODE_ENV=production",
            "DEEPTUTOR_IGNORE_PROCESS_ENV_OVERRIDES=1"
        ],
        "Cmd": null,
        "Healthcheck": {
            "Test": [
                "CMD-SHELL",
                "python /app/healthcheck.py"
            ],
            "Interval": 30000000000,
            "Timeout": 10000000000,
            "StartPeriod": 60000000000,
            "Retries": 3
        },
        "Image": "",
        "Volumes": null,
        "WorkingDir": "/app",
        "Entrypoint": [
            "/app/entrypoint.sh"
        ],
        "OnBuild": null,
        "Labels": {
            "description": "DeepTutor: AI-Powered Personalized Learning Assistant",
            "maintainer": "DeepTutor Team",
            "org.opencontainers.image.created": "2026-07-28T17:57:11.958Z",
            "org.opencontainers.image.description": "DeepTutor: Lifelong Personalized Tutoring. https://deeptutor.info/.",
            "org.opencontainers.image.licenses": "Apache-2.0",
            "org.opencontainers.image.revision": "f2aa49f42e67dbfbb9ce6b95e3f62ccd04bb852a",
            "org.opencontainers.image.source": "https://github.com/HKUDS/DeepTutor",
            "org.opencontainers.image.title": "DeepTutor",
            "org.opencontainers.image.url": "https://github.com/HKUDS/DeepTutor",
            "org.opencontainers.image.version": "1.5.6"
        }
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Size": 1269215243,
    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/c77b70b6b661dd29b8fe6a8424eebf0418fe068f626ca24ae0867b488f177b4c/diff:/var/lib/docker/overlay2/f3169eed8c2ffedf29b67a554992f7b05a0c082b0d4946d81ab89c12550112f2/diff:/var/lib/docker/overlay2/ad10b0e778e0e3cb61c27075549909e10b951b4f6f68ac0bcddce54497b066a8/diff:/var/lib/docker/overlay2/2d8677e689265b15ba779c6181b7cae5b3f2ab244d746437960e6c49affccdf5/diff:/var/lib/docker/overlay2/928e02c2aacdc3cc9d92fc08233ae88aceea65ac93f640079480b9c411fc0b30/diff:/var/lib/docker/overlay2/a9265448182b260f374555da666723317b8bbe81a2cead7a5f4ce791f8079606/diff:/var/lib/docker/overlay2/72ba34aafc0b4c4c6c02e577926c08d3cb9b3564d5222677fc59eb5e63857b97/diff:/var/lib/docker/overlay2/fbc60672cb8351174711dff74e52c4db047033a87dc65fa5a80c5ab7e7ede805/diff:/var/lib/docker/overlay2/a4ab2d25fb89d1a52eca5d5dc1112f7f932e12aeb469ea41df362a430610573c/diff:/var/lib/docker/overlay2/1464f8c983ba28767496ce2fd8f800212a2642a320986ff0edf55dd450993654/diff:/var/lib/docker/overlay2/11c432434343a2f8594f7edfb3d5e6982bd2faac22f13668428ef59d0441c153/diff:/var/lib/docker/overlay2/146c48a426acfc1219d059d403de68b1e41eb46e3d705fc75eee30bf9121698d/diff:/var/lib/docker/overlay2/8f7bfd1a8a08ab25c57a9a59ccd9d9a9034e3c34e39b8f6d75f8fa24ba4282dd/diff:/var/lib/docker/overlay2/db53326e18710cf37ea67277fcde87460decc10ee1befe29ada51e5583cbc25a/diff:/var/lib/docker/overlay2/05a28792a3baa1de1e3d5e7e0737b9b6b9903e4ad19e3e40ff6d67f53615f424/diff:/var/lib/docker/overlay2/f198f3fac082e45377c800c0814f8ad2d08036d7f0c1fe367d7c1051a5bfcf0d/diff:/var/lib/docker/overlay2/bccb0e5cc9095bf491693cf8c67f27579a4c7a9c39a7ad1b3091263086a4a22c/diff:/var/lib/docker/overlay2/ac734944f7e9d109a0a04b6b33c4178710c2f48fcd2e59fb8a2de1933f721a38/diff:/var/lib/docker/overlay2/0db25133c86e112576e43907ebe3e77d9c40bce316e7feb3a200b4d883e9d510/diff:/var/lib/docker/overlay2/b422fea03ed4f312f727e9484ec21aa01ae3367194f15a45558ac4e35f52566f/diff:/var/lib/docker/overlay2/99f7339d67daff4487c1dd572cce1c08c3c0a7a072ce36555f98d37cdb83a43b/diff:/var/lib/docker/overlay2/8c10c57b2dc1e2064cdc3299a3613955f1c4a4221537072fe328179ca5a6bc84/diff:/var/lib/docker/overlay2/6350e2147ffc968eef509dcc64ad09265dbf69987ca18c8ecdb3dc3b480554c4/diff:/var/lib/docker/overlay2/b962c87e765de952f51112309791a6bb85b4dd1da60023b6be246e9e2826b942/diff:/var/lib/docker/overlay2/7de41951f2138ada8d90c4ac1242c93d7d64d96328af9b3f74f0266cfde8690c/diff:/var/lib/docker/overlay2/f998b3e6c00fb9d2120adb75322ded5ad2cdd8975d51d79bf6b2a3619cad6264/diff:/var/lib/docker/overlay2/67b4c8f56e5583290831a5b71635789f2ffd2fddb63dd853fbdf8d4cdc9ba95e/diff:/var/lib/docker/overlay2/32452da04d63e5f9b6303c6feedaa59f58c3122480b080dcba78bb8c900759bd/diff:/var/lib/docker/overlay2/cf4e697a44b559398490b3c9954d45f78a419814b3ca6802679afa36afbd439e/diff:/var/lib/docker/overlay2/6c7b3df8a004536929c728ec93981a0f660820adf370e3c1c62e83a9aa955b34/diff:/var/lib/docker/overlay2/d4a03869327e766ec225f580788492938049f3f6d45cef025a605beb91846033/diff:/var/lib/docker/overlay2/845607d30e343e732c93371b85b9cde81a5d3ba260bd065b9b1ea3dde3afcfec/diff:/var/lib/docker/overlay2/f24ade665d94e6f8ff29f06c32243f0eb4e1ac8da4feddb1b4ad6020791e6a90/diff",
            "MergedDir": "/var/lib/docker/overlay2/3d73b6fbb0df4b1228bcd1b4ad9fabf40b81171312a9b83cf66d9d35f1ae2893/merged",
            "UpperDir": "/var/lib/docker/overlay2/3d73b6fbb0df4b1228bcd1b4ad9fabf40b81171312a9b83cf66d9d35f1ae2893/diff",
            "WorkDir": "/var/lib/docker/overlay2/3d73b6fbb0df4b1228bcd1b4ad9fabf40b81171312a9b83cf66d9d35f1ae2893/work"
        },
        "Name": "overlay2"
    },
    "RootFS": {
        "Type": "layers",
        "Layers": [
            "sha256:f2ec4de84f559f5c7be4233b589cdbdbb5507807e05621b77320edd55a1f2a0f",
            "sha256:1d1e59fb358647027ab521a60f44f87f158376fd9477b6542ef8e88992301dd1",
            "sha256:99ab40bce873c6bc2ef49d1441dcbd1752681c34a02f4655fb3f68f8f2b34523",
            "sha256:fc95983f78e7d6f0a6a727cef3214722721b65d6d2710fc433fc381cac671ec2",
            "sha256:3c0147bac407e1cc62d41106d68ee90839aac8691677b320eaefa579de8a47ae",
            "sha256:3ca07c740e25cd90f2946487cefdb52923e4bd0d80c6ab77f26efa2172c0eeb0",
            "sha256:572e837349dcc2428dffd63e0319d914ef974933f0e375b9af363e16b8fe268f",
            "sha256:9a3952a7c6edefce4c3e1d98e5d6a01653fa744f814d46d4b657bb37caeac46d",
            "sha256:79de939a324d335543e4cc57789513be7610b7d583457f1a7b29bdb5bcde9e6f",
            "sha256:7ac477c4ed31b684749e041617a921a4781409fe20cfed1e6470fed6aef95f21",
            "sha256:33e5d0b785fd7ab9d7483dcbf6706788f719eb9a3067e49bb4be2520d6675548",
            "sha256:957e53b2f574a3b08d15fffd9e912442e9f3c00c2ccb1eba5e7194d75e66e127",
            "sha256:1699a2a9c1da134a636e578c5c8c0da1acc10e32eb73006a5b52dd4dd5855646",
            "sha256:323ab8b7cfd0aa9902d5ae46de81c6b16e9a0eeb9b6b72aa9521187bcccacb57",
            "sha256:b2e48a69d7301f131877e50966b816f89b0816f1d9a0cc6c980422f3ac405e6e",
            "sha256:adc75616bf0078e70845bb425a70ef78f971b3e232e26f7c334f485f43be80b0",
            "sha256:671929c6b43e1a4be5c3f3f221bec722e676413279d5fd5183cedd05f9b43a1e",
            "sha256:42e0ad390b0f374c8655f6339939acd636e14fcc1180a14b73984b2cd86872cd",
            "sha256:3131dbe594f51aa439cb1a7fa820da34d059bbd62f4776e2cf6f9a1f3ce080f8",
            "sha256:19ea46ed9736abefd8e844e94259a8c417d7d2de2a0b49c1239e1c4491423718",
            "sha256:82144bf0b19b6f257891f29f8c6ed03f47b94d9152b86c0ebabfb6a5694d65bf",
            "sha256:8f474f0be0ddcec5ca504970e76bc2c17e20901b64bb0049fa9494903af3abb4",
            "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
            "sha256:055bbc5ee1b33592da0baf48b9e34738fff36ebdbec036794088705099dbb74b",
            "sha256:8dc911968b990060c97cc8b7a074e3e306e9aeb279ff10b02ccd989e89aa021a",
            "sha256:1eff5c5b257fefbaad049683f947015f99bf7ef326487ace0c02b28191dedad4",
            "sha256:1eff5c5b257fefbaad049683f947015f99bf7ef326487ace0c02b28191dedad4",
            "sha256:cc46ecb6197ef784c0aacaf4b4a100d5b8992c24cb4fcb9e516b59491a66f210",
            "sha256:3fc84ca7ebe8d52591f48d40f923fbf810153a0a847a50409e1a3cfd5fc45ca6",
            "sha256:e89b3bc6f92461e4ea962e21cab3d3f763e7e07200d78d55667f4152f3311e40",
            "sha256:bc7342e77715d668c617a06989b11a9601d2bf902f2cf4684507236619c782e2",
            "sha256:d201bf4453d46428c8c6c9214a41a32ac37e06d94b640d08e046fd646bf2ae81",
            "sha256:0e38d1a70328f1caefa3da4fbbb2c9eed25e18e1267586eb2cdd25880291cf3b",
            "sha256:5f9f434a2ca0b03efac64b32f43439a75b157f09dee47114674a9b6efcf1b84f"
        ]
    },
    "Metadata": {
        "LastTagTime": "2026-07-29T08:59:04.340792923+08:00"
    }
}

更多版本

ghcr.io/hkuds/deeptutor:latest

linux/amd64 ghcr.io10.10GB2026-01-09 00:57
834

ghcr.io/hkuds/deeptutor:1.0.3

linux/amd64 ghcr.io1.10GB2026-04-14 11:01
273

ghcr.io/hkuds/deeptutor:1.1.2

linux/amd64 ghcr.io1.08GB2026-04-20 10:56
268

ghcr.io/hkuds/deeptutor:1.3.10

linux/amd64 ghcr.io1.11GB2026-05-22 18:03
164

ghcr.io/hkuds/deeptutor:1.5.2

linux/amd64 ghcr.io1.27GB2026-07-20 17:55
44

ghcr.io/hkuds/deeptutor:1.5.5

linux/amd64 ghcr.io1.27GB2026-07-27 11:25
26

ghcr.io/hkuds/deeptutor:1.5.6

linux/amd64 ghcr.io1.27GB2026-07-29 09:00
19
检测到您正在使用广告拦截插件,本站为公益站点,依赖广告维持运转 🙏 查看如何关闭 ×