mirror of
https://github.com/MemeMeow-Studio/MemeMeow.git
synced 2026-10-16 20:31:33 +08:00
58 lines
2.1 KiB
Bash
Executable File
58 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 共享 Agent 容器的构建、启动、探针和停止入口。
|
|
|
|
set -Eeuo pipefail
|
|
|
|
ROOT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
source "$ROOT_DIR/scripts/runtime-identity.sh"
|
|
configure_runtime_identity
|
|
COMPOSE_FILE="${MEMEMEOW_COMPOSE_FILE:-$ROOT_DIR/docker-compose.yml}"
|
|
SERVICE="mememeow-agent-runtime"
|
|
|
|
mkdir -p "$ROOT_DIR/data/opencode" "$ROOT_DIR/data/images"
|
|
|
|
compose() {
|
|
# 用户可能尚未刷新 docker 组,统一通过 sg 运行 Docker 命令。
|
|
if docker info >/dev/null 2>&1; then
|
|
docker compose -f "$COMPOSE_FILE" "$@"
|
|
else
|
|
# sg 只接受一个命令字符串;用 bash 的 %q 为每个参数安全转义,避免路径
|
|
# 或任务参数改变命令语义。
|
|
local quoted argument
|
|
printf -v quoted 'docker compose -f %q' "$COMPOSE_FILE"
|
|
for argument in "$@"; do
|
|
printf -v argument '%q' "$argument"
|
|
quoted+=" $argument"
|
|
done
|
|
sg docker -c "$quoted"
|
|
fi
|
|
}
|
|
|
|
case "${1:-check}" in
|
|
build)
|
|
compose build "$SERVICE"
|
|
;;
|
|
start)
|
|
compose up -d --build "$SERVICE"
|
|
compose ps "$SERVICE"
|
|
;;
|
|
check)
|
|
compose ps "$SERVICE"
|
|
compose exec -T "$SERVICE" sh -lc 'set -eu; id; opencode --version; node --version; python3 --version; file --version | head -1; convert --version | head -1; jq --version; curl --version | head -1; if command -v tesseract >/dev/null 2>&1; then printf "agent runtime forbidden tool present: tesseract\n" >&2; exit 1; fi; test "$(id -u)" != 0; test -r /images && test ! -w /images; test -r /skills/research-meme-context && test ! -w /skills/research-meme-context; test -r /opt/mememeow/node_modules && test ! -w /opt/mememeow/node_modules; test -r /runtime && test -w /runtime; test ! -S /var/run/docker.sock; test ! -e /.env; python3 -m executor.probe; printf "agent runtime probe: ok\n"'
|
|
;;
|
|
stop)
|
|
compose stop "$SERVICE"
|
|
;;
|
|
restart)
|
|
compose stop "$SERVICE"
|
|
compose up -d --build "$SERVICE"
|
|
;;
|
|
logs)
|
|
compose logs --tail=200 "$SERVICE"
|
|
;;
|
|
*)
|
|
echo "用法: $0 {build|start|check|stop|restart|logs}" >&2
|
|
exit 2
|
|
;;
|
|
esac
|