From b7243660c4ee1714e65c1ae369c52aee4216f112 Mon Sep 17 00:00:00 2001 From: yangjianbo Date: Thu, 12 Feb 2026 17:42:18 +0800 Subject: [PATCH] =?UTF-8?q?fix(deploy):=20=E4=BF=AE=E5=A4=8D=20Postgres=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9C=AA=E6=8C=81=E4=B9=85=E5=8C=96=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E9=87=8D=E5=90=AF=E5=90=8E=E6=97=A0=E6=B3=95=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原因:postgres:18-alpine 默认 PGDATA 不在 /var/lib/postgresql/data,数据落到匿名卷,docker compose down/up 会触发 initdb 重新初始化。 修复:在 compose 中显式设置 PGDATA=/var/lib/postgresql/data,让数据落到 postgres_data 命名卷。 --- deploy/docker-compose-aicodex.yml | 4 ++++ deploy/docker-compose-test.yml | 4 ++++ deploy/docker-compose.yml | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/deploy/docker-compose-aicodex.yml b/deploy/docker-compose-aicodex.yml index c8a98e87..be0aed24 100644 --- a/deploy/docker-compose-aicodex.yml +++ b/deploy/docker-compose-aicodex.yml @@ -162,6 +162,10 @@ services: volumes: - postgres_data:/var/lib/postgresql/data environment: + # postgres:18-alpine 默认 PGDATA=/var/lib/postgresql/18/docker(位于镜像声明的匿名卷 /var/lib/postgresql 内)。 + # 若不显式设置 PGDATA,则即使挂载了 postgres_data 到 /var/lib/postgresql/data,数据也不会落盘到该命名卷, + # docker compose down/up 后会触发 initdb 重新初始化,导致用户/密码等数据丢失。 + - PGDATA=/var/lib/postgresql/data - POSTGRES_USER=${POSTGRES_USER:-sub2api} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} - POSTGRES_DB=${POSTGRES_DB:-sub2api} diff --git a/deploy/docker-compose-test.yml b/deploy/docker-compose-test.yml index 5f47bc4d..4c7ec144 100644 --- a/deploy/docker-compose-test.yml +++ b/deploy/docker-compose-test.yml @@ -142,6 +142,10 @@ services: volumes: - postgres_data:/var/lib/postgresql/data environment: + # postgres:18-alpine 默认 PGDATA=/var/lib/postgresql/18/docker(位于镜像声明的匿名卷 /var/lib/postgresql 内)。 + # 若不显式设置 PGDATA,则即使挂载了 postgres_data 到 /var/lib/postgresql/data,数据也不会落盘到该命名卷, + # docker compose down/up 后会触发 initdb 重新初始化,导致用户/密码等数据丢失。 + - PGDATA=/var/lib/postgresql/data - POSTGRES_USER=${POSTGRES_USER:-sub2api} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} - POSTGRES_DB=${POSTGRES_DB:-sub2api} diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 285d0b13..e5c97bf8 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -166,6 +166,10 @@ services: volumes: - postgres_data:/var/lib/postgresql/data environment: + # postgres:18-alpine 默认 PGDATA=/var/lib/postgresql/18/docker(位于镜像声明的匿名卷 /var/lib/postgresql 内)。 + # 若不显式设置 PGDATA,则即使挂载了 postgres_data 到 /var/lib/postgresql/data,数据也不会落盘到该命名卷, + # docker compose down/up 后会触发 initdb 重新初始化,导致用户/密码等数据丢失。 + - PGDATA=/var/lib/postgresql/data - POSTGRES_USER=${POSTGRES_USER:-sub2api} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} - POSTGRES_DB=${POSTGRES_DB:-sub2api}