chore(部署): 服务器的数据库和 Redis 改由 OJ2 自己起,不用再改 OJDeploy 下的 compose;附一次性搬家脚本
Deploy / deploy (push) Canceled after 0s
Deploy / deploy (push) Canceled after 0s
compose.debian.yml 去掉外接形态,postgres / redis 固定由本栈起(PostgreSQL 18、Redis 8)。 docker/move-db-into-oj2.sh 把服务器上旧栈的 16 / 7 倒进来:先编镜像、确认机房已断开、 备份、恢复时剥掉 dump 里的 md5 口令(18 只认 SCRAM)、核对行数和网络登录,最后交给 deploy.sh。 生产库口令原来是默认的 onlinejudge(超级用户、5445 对公网开着),脚本要求换成强口令才执行。 本机按线上「之前」的状态完整演练过:停机到恢复 36 秒,行数一致,登录态保住,提交照常判题。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
fad43f513f
commit
625bd49801
7 files changed
+350
-239
No files matched your search
+6
-11
@@ -4,14 +4,10 @@
|
||||
#
|
||||
# ## 为什么不走 docker compose exec
|
||||
#
|
||||
# 线上是**外接形态**:postgres 容器由 /root/OJDeploy/docker-compose.yml 起,不归
|
||||
# OJ2 这套 compose 管。compose.debian.yml 里虽然也定义了 oj-postgres,但它挂着
|
||||
# `profiles: ["local-data"]`,只在「自带数据」形态下才启动。所以在 OJ2 目录里跑
|
||||
#
|
||||
# docker compose exec -T oj-postgres pg_dumpall ...
|
||||
#
|
||||
# 会报 `service "oj-postgres" is not running` —— 容器明明在跑,只是属于另一个
|
||||
# compose 项目。这里直接按容器名 `docker exec`,跟谁起的无关,两种形态都能用。
|
||||
# 按容器名 `docker exec`,跟容器是谁起的无关:以前线上的 postgres 由旧栈那份
|
||||
# /root/OJDeploy/docker-compose.yml 起,在 OJ2 目录里 `docker compose exec` 会报
|
||||
# `service "oj-postgres" is not running`。现在它归 compose.debian.yml 了,但按名字找
|
||||
# 照样能用,move-db-into-oj2.sh 搬家时也靠这一点去备份旧容器(CONTAINER=旧容器名)。
|
||||
#
|
||||
# ## 用法
|
||||
#
|
||||
@@ -104,9 +100,8 @@ human() {
|
||||
say "自检"
|
||||
|
||||
docker ps --filter "name=^/${CONTAINER}\$" --filter status=running -q | grep -q . \
|
||||
|| die "容器 $CONTAINER 没在跑。用 CONTAINER=... 指定容器名;外接形态下它由
|
||||
/root/OJDeploy/docker-compose.yml 起:
|
||||
docker compose -f /root/OJDeploy/docker-compose.yml up -d $CONTAINER"
|
||||
|| die "容器 $CONTAINER 没在跑。用 CONTAINER=... 指定容器名;服务器上它由本栈起:
|
||||
docker compose -f docker/compose.debian.yml --env-file docker/.env up -d $CONTAINER"
|
||||
|
||||
# 用 psql 真连一次,不用 pg_isready:后者只探「服务在不在」,DB_USER 写错照样说 OK,
|
||||
# 要等到 pg_dumpall 那步才炸出一句 role does not exist
|
||||
|
||||
Reference in new issue
Block a user