From 127bd6e5ce26943de7d6dbe54b73091b514e8875 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Tue, 13 Oct 2026 21:17:16 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E9=83=A8=E7=BD=B2):=20=E6=90=AC=E5=AE=B6?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E6=8A=8A=E7=BA=BF=E4=B8=8A=E7=9A=84=E6=97=A7?= =?UTF-8?q?=20postgres=20=E8=AF=AF=E8=AE=A4=E6=88=90=E3=80=8C=E5=B7=B2?= =?UTF-8?q?=E7=BB=8F=E6=90=AC=E8=BF=87=E4=BA=86=E3=80=8D=EF=BC=8C=E4=B8=80?= =?UTF-8?q?=E6=AD=A5=E6=B2=A1=E5=81=9A=E5=B0=B1=E9=80=80=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 旧栈 compose 原名 docker-compose.debian.yml,按容器标签里的文件名包含 compose.debian.yml 来认会撞上。「已经搬过」改为只靠「旧库必须是 16」和「postgresql/ 不存在」两道判断。 Co-Authored-By: Claude Opus 5.5 --- docker/move-db-into-oj2.sh | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docker/move-db-into-oj2.sh b/docker/move-db-into-oj2.sh index 7e59b38..b4e2d02 100755 --- a/docker/move-db-into-oj2.sh +++ b/docker/move-db-into-oj2.sh @@ -90,14 +90,13 @@ old_pg=$(docker ps --filter publish=5445 --format '{{.Names}}' | head -1) old_redis=$(docker ps --filter publish=5446 --format '{{.Names}}' | head -1) [ -n "$old_pg" ] || die "没找到发布 5445 的容器(旧的 postgres)。它没在跑?" [ -n "$old_redis" ] || die "没找到发布 5446 的容器(旧的 redis)。它没在跑?" -for c in "$old_pg" "$old_redis"; do - files=$(docker inspect -f '{{index .Config.Labels "com.docker.compose.project.config_files"}}' "$c") - [[ "$files" != *compose.debian.yml* ]] || die "$c 已经是 OJ2 的 compose 起的 —— 已经搬过了" -done +# 「已经搬过了」靠这里的 16 和上面 postgresql/ 不存在来判断,不看容器是哪个 compose 起的: +# 旧栈那份文件原名 docker-compose.debian.yml,按文件名认会把它当成本栈的(线上撞过) pgver=$(docker exec "$old_pg" psql -U onlinejudge -d onlinejudge -tAc 'show server_version_num') [ "${pgver:0:2}" = 16 ] || die "$old_pg 是 PostgreSQL $pgver,这个脚本只认 16" -ok "旧 postgres:$old_pg($(docker inspect -f '{{.Config.Image}}' "$old_pg"))" -ok "旧 redis:$old_redis($(docker inspect -f '{{.Config.Image}}' "$old_redis"))" +from() { docker inspect -f '{{.Config.Image}},{{index .Config.Labels "com.docker.compose.project.config_files"}}' "$1"; } +ok "旧 postgres:$old_pg($(from "$old_pg"))" +ok "旧 redis:$old_redis($(from "$old_redis"))" redis_src=$(docker inspect -f '{{range .Mounts}}{{if eq .Destination "/data"}}{{.Source}}{{end}}{{end}}' "$old_redis") [ -n "$redis_src" ] || die "$old_redis 的 /data 没挂到宿主机目录上,会话和队列搬不过来"