현재 /var/discourse 경로에서 스탠드얼론 Docker 컨테이너로 Discourse를 실행 중입니다.
내장된 PostgreSQL 데이터베이스를 15 버전에서 18 버전으로 업그레이드하려고 시도했습니다. 업그레이드가 완료된 것처럼 보였고, 활성 데이터 디렉터리가 이제 다음과 같이 보고하고 있습니다:
/shared/postgres_data/PG_VERSION
18
그러나 다시 빌드된 Discourse 컨테이너에는 여전히 PostgreSQL 15 바이너리만 포함되어 있습니다:
/usr/lib/postgresql/15/bin/postgres
postgres (PostgreSQL) 15.18
PostgreSQL 서비스는 다음과 같이 실행되도록 구성되어 있습니다:
/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
반면 실제 Discourse 데이터 디렉터리는 다음 위치에 마운트되어 있습니다:
/shared/postgres_data
따라서 PostgreSQL은 다음과 같은 오류로 실패합니다:
FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 18,
which is not compatible with this version 15.18
(Debian 15.18-1.pgdg12+1).
최근 Discourse Docker 이미지는 PostgreSQL 18 바이너리를 포함해야 한다고 알고 있습니다. app.yml을 PostgreSQL 18 템플릿을 사용하도록 변경하고 앱을 다시 빌드했지만, 생성된 컨테이너에는 여전히 PostgreSQL 15 바이너리가 있으며 서비스 스크립트는 여전히 /etc/postgresql/15/main을 가리키고 있습니다.
현재 서비스 구성의 관련 부분은 다음과 같습니다:
HOME=/var/lib/postgresql USER=postgres exec thpoff \
chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert \
/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
질문은 다음과 같습니다:
-
PostgreSQL 18 바이너리가 실제로 포함되도록 Discourse 컨테이너를 올바르게 다시 빌드하거나 업데이트하는 방법은 무엇인가요?
-
app.yml에서 사용해야 하는 특정 템플릿 또는 이미지 태그가 있나요? -
PostgreSQL 18이 사용 가능해지면, 기존
/shared/postgres_data디렉터리에 대해 시작하는 지원되는 절차는 무엇인가요?
PostgreSQL 18 데이터 디렉터리를 삭제하거나 재초기화하지 않았습니다. 이전 PostgreSQL 15 데이터를 복원하는 것보다는 업그레이드된 클러스터를 복구하는 것이 좋습니다.