업데이트 오류: Docker 버전에서 멈춤

안녕하세요,
어제 discourse를 업데이트하려고 했으나 실패했습니다. Docker 버전 24.0.2가 더 이상 지원되지 않는다는 경고 오류가 발생했습니다.
다음 주제에서 해결을 시도해 보았으나 상황이 변하지 않았습니다.

재빌드(rebuild)를 시도했을 때의 로그는 다음과 같습니다:


> root@ubuntu-s-1vcpu-1gb-ams3-01:/var/discourse# ./launcher rebuild app
> WARNING: Docker version 24.0.2 deprecated, recommend upgrade to 24.0.7 or newer.
> x86_64 arch detected.
> 
> WARNING: We are about to start downloading the Discourse base image
> This process may take anywhere between a few minutes to an hour, depending on your network speed
> 
> Please be patient
> 
> 2.0.20250129-0720: Pulling from discourse/base
> af302e5c37e9: Pull complete
> ed49ab5c933d: Pull complete
> 7cb9e730d898: Pull complete
> 7c28a6b187b2: Pull complete
> 23222af7238f: Pull complete
> 59b87d9ed5c1: Pull complete
> 90d60b432298: Pull complete
> d3b3135aa82b: Pull complete
> 94e7b594395d: Pull complete
> cf15e2c89d00: Pull complete
> 2c0cccf9ec27: Pull complete
> 5d8ea2a8d564: Pull complete
> 020f04b42275: Pull complete
> 06e22604f387: Pull complete
> 8b0ecc579aad: Pull complete
> 4d577f7424c0: Pull complete
> 37ef4781925f: Pull complete
> 30d67d1af761: Pull complete
> 43eaf8c26af4: Pull complete
> 02f4cc50eabd: Pull complete
> 93896ee36e56: Pull complete
> fadd5d615e0e: Pull complete
> 85f9459cb30e: Pull complete
> eaddca2afacb: Pull complete
> f54443d29a2d: Pull complete
> ed6f0f133683: Pull complete
> 3d1894dc563f: Pull complete
> 51ca3f63c909: Pull complete
> b87374db2274: Pull complete
> Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
> Status: Downloaded newer image for discourse/base:2.0.20250129-0720
> docker.io/discourse/base:2.0.20250129-0720
> WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
> Ensuring launcher is up to date
> Fetching origin
> Launcher is up-to-date
> 2.0.20240708-0023: Pulling from discourse/base
> 76956b537f14: Pull complete
> c5ffad89ad3c: Pull complete
> 71c31a50a587: Pull complete
> c1a1234dcb61: Pull complete
> 9980a27afc32: Pull complete
> 4f4fb700ef54: Pull complete
> 304b565c70c9: Pull complete
> 8ad811162d08: Pull complete
> 2c324dce526d: Pull complete
> 52d141c2b1c8: Pull complete
> 4c08fdcd145a: Pull complete
> 1b6035ac25c0: Pull complete
> 9208d0f90623: Pull complete
> 513dccf6f63f: Pull complete
> e0b141854963: Pull complete
> 4476d7dd9441: Pull complete
> 0fad77941078: Pull complete
> 46c34476ea19: Pull complete
> ff0b86516349: Pull complete
> c33170d09c8b: Pull complete
> ed4a793ffe51: Pull complete
> 3a7b2554e089: Pull complete
> 3ad8a6408839: Pull complete
> e7c58bcc7f57: Pull complete
> 59b2407fe431: Pull complete
> 315160f4d4f8: Pull complete
> ad328ba96976: Pull complete
> 825dca2e642e: Pull complete
> 9fbd8c908047: Pull complete
> b1d30330e969: Pull complete
> 8c76c65bb8e8: Pull complete
> 9279965667b5: Pull complete
> a0ae3eb4d088: Pull complete
> 819fb509ef8b: Pull complete
> c962935d47d4: Pull complete
> 63b444b5bd1e: Pull complete
> 7efa1c09faf6: Pull complete
> 46c4327ce462: Pull complete
> b095ebe7bdf6: Pull complete
> 3aa16a533cab: Pull complete
> 41419e4f1948: Pull complete
> 589837814d9a: Pull complete
> bd025ad1b844: Pull complete
> 24762ff7528f: Pull complete
> fe364253c657: Pull complete
> Digest: sha256:025e9c1f6848c4726544c6ae873d710c62f547b72afb7f537aaa44eb5377cb5c
> Status: Downloaded newer image for discourse/base:2.0.20240708-0023
> docker.io/discourse/base:2.0.20240708-0023
> /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
> /usr/local/bin/pups --stdin
> I, [2025-02-14T15:37:56.973519 #1]  INFO -- : Reading from stdin
> I, [2025-02-14T15:37:56.993945 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
> I, [2025-02-14T15:37:57.000584 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
> I, [2025-02-14T15:37:57.007505 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
> I, [2025-02-14T15:37:57.013066 #1]  INFO -- : File > /root/install_postgres  chmod: +x  chown:
> I, [2025-02-14T15:37:57.018588 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
> 
> 
> FAILED
> --------------------
> Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/postgresql/15/main/postgresql.conf
> Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/replace_command.rb:11:in `read'
> replace failed with the params {"filename"=>"/etc/postgresql/15/main/postgresql.conf", "from"=>"data_directory = '/var/lib/postgresql/15/main'", "to"=>"data_directory = '/shared/postgres_data'"}
> bootstrap failed with exit code 1
> ** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
> ./discourse-doctor may help diagnose the problem.
> b96283ee8b084accdfaba73be8e021e7ac7434b153232f099b9b22fd5e65c501
> root@ubuntu-s-1vcpu-1gb-ams3-01:/var/discourse#

제 사이트는 Digital Ocean의 droplet에 있습니다.

  • Docker 버전 24.0.2, 빌드 cb74dfc
  • LSB 모듈이 사용 불가능합니다.
  • Distributor ID: Ubuntu
  • Description: Ubuntu 18.04.6 LTS
  • Release: 18.04
  • Codename: bionic

이 문제를 해결하고 제 사이트를 다시 온라인으로 올릴 수 있는 방법을 알려 주실 수 있을까요? 저는 리눅스에 대해 매우 숙련되지는 않았지만, 절차를 이해할 수 있습니다. 감사합니다.

app.yml 파일을 공유해 주시겠어요? 거기서 컨테이너 이미지를 고정(pinned)한 것으로 보입니다.

기존 컨테이너를 다음과 같이 시작할 수 있어야 합니다.

 ./launcher start app

이렇게 하면 다시 정상적으로 실행됩니다.

거의 2년 가까이 수명 종료(End of Life) 시점을 지나 있습니다. 새로운 가상 머신을 설정하고 rsync를 사용하여 Discourse 사이트를 다른 VPS로 이동하는 것을 권장합니다.

저는 이를 권장하지 않지만, 최근 몇몇 사용자가 dist-upgrade를 실행하여 성공적으로 해결했다는 보고가 있습니다.

rsync가 너무 복잡하게 느껴진다면, app.yml 파일과 백업 파일만 복사한 뒤 재빌드(rebuild)를 수행하고 백업을 복원하면 됩니다. 이 경우 기존 서버에서 새 서버로 app.yml과 백업 파일을 이동하는 방법을 찾아야 합니다.

OS 업그레이드나 새 VM으로의 이전이 부담스럽고 유료 지원을 원하신다면 이메일로 연락 주셔도 됩니다(주소는 제 사용자 카드에 있습니다).

안녕하세요,
무언가 문제가 있는 것 같습니다:

root@ubuntu-s-1vcpu-1gb-ams3-01:~# cd /var/discourse
root@ubuntu-s-1vcpu-1gb-ams3-01:/var/discourse#  ./launcher start app
WARNING: Docker version 24.0.2 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by                                                                                                                                                              running: chmod o-rwx containers/app.yml

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e                                                                                                                                                              RAILS_ENV=production -e UNICORN_WORKERS=2 -e UNICORN_SIDEKIQS=1 -e RUBY_GC_HEAP                                                                                                                                                             _GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJ                                                                                                                                                             ECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_                                                                                                                                                             HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_                                                                                                                                                             FORCE_HTTPS=true -e DISCOURSE_HOSTNAME=libertysim.net -e DISCOURSE_DEVELOPER_EMA                                                                                                                                                             ILS=webmaster@libertysim.net -e DISCOURSE_SMTP_ADDRESS=smtp.mailgun.org -e DISCO                                                                                                                                                             URSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=postmaster@libertysim.net -e DISC                                                                                                                                                                                                                                                                                                                                       hared/standalone/log/var-log:/var/log --mac-address 02:ae:e1:d5:0f:0f local_disc                                                                                                                                                             ourse/app /sbin/boot
Unable to find image 'local_discourse/app:latest' locally
docker: Error response from daemon: pull access denied for local_discourse/app,                                                                                                                                                              repository does not exist or may require 'docker login': denied: requested acces                                                                                                                                                             s to the resource is denied.
See 'docker run --help'.

이거 뭐예요?

그리고 비밀번호를 공개적으로 올렸네요.

지원되는 버전의 Docker를 사용하려면 최신 OS로 전환해야 합니다. OS를 업그레이드하여 지원되는 Docker를 확보하지 않으면 Docker를 업그레이드(쉽게?)할 수 없습니다.

app.yml에서 이 부분을 제거해야 합니다.

app.yml에서 해당 줄을 제거하면 해결될 가능성이 있지만, 사이트가 사용 불가능해질 가능성도 그만큼 큽니다. 다른 작업을 하기 전에 반드시 백업을 만들어 두시기 바랍니다.

실수했어, 미안해

음, 먼저 OS를 업데이트해야겠네

플래그를 걸었지만, 약 15분 동안 노출되었습니다. 그래서 두 가지를 모두 변경하고 싶으신 건가요?

참고로, 더 진행하면 MaxMind가 작동하지 않습니다. 계정 번호도 필요합니다. 그리고 그 두 줄 앞에는 모두 두 칸의 공백이 필요합니다.

이 줄을 삭제하고 다시 빌드하세요.