웹과 데이터 컨테이너 2개 구성의 Docker 이미지에서 구버전 Postgres

안녕하세요,

Docker 기반 Discourse 인스턴스를 업그레이드하려고 시도하다가 막혀 있습니다. 컨테이너를 재빌드하거나, 부트스트랩하거나, 그 밖의 어떤 방식으로든 설정을 시도하면 다음 오류가 발생합니다:

I, [2020-11-18T15:23:37.357104 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake plugin:pull_compatible_all'
I, [2020-11-18T15:23:40.298932 #1]  INFO -- : discourse-slack-official is already at latest compatible version
docker_manager is already at latest compatible version

I, [2020-11-18T15:23:40.299193 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

PG::SyntaxError: ERROR:  syntax error at or near "NOT"
LINE 2: ADD COLUMN IF NOT EXISTS image_upload_id bigint
                      ^

조사해 본 결과, 최신 Discourse에는 postgresql 12가 필요합니다만, 현재 공식 Docker 이미지에는 패키징되어 있지 않습니다.

리포지토리에는 postgres12로 컨테이너를 빌드하기 위한 개발 분기가 있는 것 같지만, 현재 진행 중인 PR이나 기타 정보는 없습니다…

Discourse 설치를 수정/업데이트하는 방법은 무엇일까요? 업데이트 경로가 올바르지 않아서 현재 포럼을 최대한 빨리 다시 가동하기 위해 고군분투하고 있습니다!

추가 참고: pg12 브랜치도 작동하지 않습니다(다른 컨테이너 버전을 다운로드하려는 시도는 하는 것 같지만), db:migrate에서 여전히 동일한 오류가 발생합니다…

그렇지 않습니다. Discourse의 기본 이미지는 PostgreSQL 12 업데이트 이후로 이미 몇 달 동안 PostgreSQL을 포함하고 있습니다.

app.yml 파일을 공유해 주실 수 있나요? 혹시 거기서 오래된 기본 이미지를 강제 지정해 두고 잊어버리신 것은 아닌지 궁금합니다.

현재 discourse_docker 체크아웃은 언제의 것인가요? launcher 스크립트는 자동으로 업데이트되도록 설계되어 있지만, 확실하지 않다면 수동으로 git pull을 실행해 보는 것이 좋습니다.

최신 베이스 이미지는 다음과 같아야 합니다:

image="discourse/base:2.0.20201004-2310"

다음 명령을 실행하면 어떤 결과가 나오나요?

docker images | grep discourse/base

게다가 그 플러그인은 3년 전에 비추천(deprecated) 처리되었습니다 :scream:

이상하네요. 최신 커밋을 사용하고 있습니다:

$ git branch -v
* master 4a4b0f8 DOCS: correct syntax error in readme

그리고 최신 이미지를 가지고 있는 것 같습니다:

$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
discourse/base         2.0.20201004-2310   b64c37d7ab06        6 weeks ago         2.4GB
local_discourse/data   latest              253fd4d68068        3 years ago         1.7GB

구식 도커 이미지를 정리하고 web 앱을 여러 번 재빌드해 보았습니다.

아, data 컨테이너를 먼저 재빌드해야 하는 건가요? 아직 건드리지 않았습니다.

그리고 그 플러그인은 3년 전에 비추천(deprecated) 처리되었어요 :scream:

:see_no_evil: 업데이트할 목록에 다음으로 올라가 있지만, 현재 업데이트 작업에 매몰되어 있어요!

아, 고급 데이터 설정을 사용 중이시군요?

모든 데이터 소프트웨어를 업데이트하려면 웹을 중지하고 데이터를 다시 빌드해야 합니다. 해당 섹션은 PostgreSQL 12 update 에 있습니다.

도와주셔서 감사합니다. 이제 data 컨테이너를 다시 빌드하는 중입니다…

음, 그거 잘 된 것 같네요. 다시 한번 모두 감사합니다!

디스코urses 설치 환경을 인수하고 처음 업그레이드를 해보는 경우라면 이런 시행착오는 예상되는 거죠 :sweat_smile: