docker manager beta7에서 beta9로 업그레이드 실패

안녕하세요,

최신 discourse 버전(2.4.0 beta7 >> beta9)으로 업그레이드하는 중 문제가 발생했습니다. 도커 매니저 업그레이드가 반복적으로 다음 단계에서 멈추고 있습니다:

/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:605:in `process_client'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:700:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:144:in `start'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'
Spinning up 1 Unicorn worker(s) that were stopped initially

업그레이드를 재시작하거나 초기화해도 효과가 없습니다. 어떤 아이디어가 있으신가요?

감사합니다, Thommie

서버에 SSH로 접속하여 다시 빌드해 주세요.

cd /var/discourse
git pull
./launcher rebuild app

네, 도움이 되었지만, 이제 Linux 셸과 Discourse 컨테이너 UI의 정보 사이에 불일치가 생겼습니다:

관리자 페이지에는 설치된 버전이 2.4.0.beta7, 최신 버전이 2.4.0.beta9라고 표시되어 있지만, /admin/upgrade 페이지에서는 discourse(최신 릴리스 +88), docker manager 및 플러그인이 모두 "최신 상태"라고 표시됩니다.

/var/discourse/container/app.yml 파일에는 Discourse UI에 표시된 이메일 설정과 다른 설정이 포함되어 있습니다.

재빌드(rebuild) 과정에서 무언가 실패하는 것 같습니다 …

Thommie

재구축过程中에 오류가 발생했나요?
발생했다면, 그 내용을 공유해 주시면 무엇이 잘못되었는지 파악하는 데 큰 도움이 됩니다.

좋아요, 다시 재빌드를 반복했지만 로그에서 재빌드 중 눈에 띄는 오류는 보이지 않고, INFO 레벨의 메시지만 있습니다. 마지막 줄은 다음과 같습니다:

2020-01-05 12:01:12.911 UTC [53] LOG:  shutting down
166:M 05 Jan 2020 12:01:13.087 * DB saved on disk
166:M 05 Jan 2020 12:01:13.087 # Redis is now ready to exit, bye bye...
2020-01-05 12:01:13.669 UTC [49] LOG:  database system is shut down
sha256:da70fb2de1f09e179e7b603a2e3aa17140229011b7af40b28eea4615d3fceeb6
9e56de01e8b7c16e0e24c1221ab32cf161b6b9ecd2e9bfd6f722f5226498d3cc
Removing old container
+ /usr/bin/docker rm app
app

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=de_DE.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_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_HOSTNAME=forum.netzwissen.de -e DISCOURSE_DEVELOPER_EMAILS=admin@netzwissen.de -e DISCOURSE_SMTP_ADDRESS=10.10.10.19 -e DISCOURSE_SMTP_PORT=25 -e DISCOURSE_SMTP_USER_NAME= -e DISCOURSE_SMTP_PASSWORD= -e LETSENCRYPT_ACCOUNT_EMAIL=me@example.com -h develd-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:b7:65:5c:bd:c6 local_discourse/app /sbin/boot
7201804f7d5312ceee286af3a5e7db6e3e57a5327504ce752252f238aa9a4e98

제가 추측하기로는 정상적으로 보이는 것 같습니다 … 여기에 표시된 이메일 매개변수는 정확하며 app.yml의 내용과 일치합니다. 하지만 UI에는 여전히 이전 데이터가 표시되고 있습니다 …

이건 제게는 완전히 정상적인 것 같습니다. UI에 오래된 데이터가 표시될 만한 이유를 전혀想不到하지 못하겠습니다.

… 네, 저도 이해가 안 됩니다. 컨테이너가 여전히 메일 전송에 오래된 설정 데이터를 사용하고 있어서(따라서 메일이 전달되지 않는) 문제가 발생하는데, 재빌드 과정의 마지막 줄에는 올바른 대상 SMTP 서버가 표시되고 있습니다:

  • /usr/bin/docker run -[..]
    DISCOURSE_SMTP_ADDRESS=10.10.19 -e DISCOURSE_SMTP_PORT=25 -e
    DISCOURSE_SMTP_USER_NAME= -e DISCOURSE_SMTP_PASSWORD= -e

제 생각에는 업데이트가 실패했고, Docker 컨테이너에서 여전히 이전 버전과 app.yml의 오래된 설정이 실행되고 있다는 뜻입니다. 하지만 업데이트 페이지는 다른 이야기를 하고 있죠:

이 문제를 해결하는 방법에 대한 아이디어가 있을까요?

두 개의 Discourse 인스턴스에서 동일한 문제를 겪고 있습니다.

첫 번째 오류는 다음과 같습니다:

*** Bundling assets. This will take a while *** $ RUBY_GC_MALLOC_LIMIT_MAX=20971520 RUBY_GC_OLDMALLOC_LIMIT_MAX=20971520 RUBY_GC_HEAP_GROWTH_MAX_SLOTS=50000 RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9 bundle exec rake assets:precompile Purging temp files Bundling assets I, [2020-01-08T13:52:00.932032 #29478] INFO -- : Writing /var/www/discourse/public/assets/docker-manager-app-888922f3ec4fc42543c1916f533f3fecb9af503803eb6b8b59904a2310219d1d.js I, [2020-01-08T13:52:01.102633 #29478] INFO -- : Writing /var/www/discourse/public/assets/docker-manager-app-5256678af40d7479a0d37d3bddcca6fa5c2505b83a654a6d23e9d6f4f5fd406a.css I, [2020-01-08T13:52:01.277866 #29478] INFO -- : Writing /var/www/discourse/public/assets/docker-manager-vendor-91af87077979e715f4d5034ea05c612f734c3aece05878051e901d07e84878ee.js Skipping: vendor-a681e94dd2b8c886f184865617b09b4f67b433321acef2bd98bb99bd9495307e.js already compressed #<Thread:0x0000559b93cea1d8@/var/www/discourse/lib/tasks/assets.rake:223 run> terminated with exception (report_on_exception is true): /usr/local/lib/ruby/2.6.0/net/http.rb:949:in `rescue in block in connect': Failed to open TCP connection to geolite.maxmind.com:443 (getaddrinfo: Name or service not known) (SocketError) from /usr/local/lib/ruby/2.6.0/net/http.rb:946:in `block in connect' from /usr/local/lib/ruby/2.6.0/timeout.rb:93:in `block in timeout' from /usr/local/lib/ruby/2.6.0/timeout.rb:103:in `timeout' from /usr/local/lib/ruby/2.6.0/net/http.rb:945:in `connect' from /usr/local/lib/ruby/2.6.0/net/http.rb:930:in 

그리고 아래에:

Done compressing docker-manager-vendor-91af87077979e715f4d5034ea05c612f734c3aece05878051e901d07e84878ee.js : 0.12 secs Done compressing all JS files : 4.44 secs rake aborted! SocketError: Failed to open TCP connection to geolite.maxmind.com:443 (getaddrinfo: Name or service not known) /var/www/discourse/lib/final_destination.rb:414:in `safe_session' /var/www/discourse/lib/final_destination.rb:365:in `safe_get' /var/www/discourse/lib/final_destination.rb:131:in `get' /var/www/discourse/lib/file_helper.rb:47:in `download' /var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download' /var/www/discourse/lib/tasks/assets.rake:226:in `block (3 levels) in <top (required)>' /var/www/discourse/lib/tasks/assets.rake:225:in `each' /var/www/discourse/lib/tasks/assets.rake:225:in `block (2 levels) in <top (required)>' Caused by: SocketError: getaddrinfo: Name or service not known /var/www/discourse/lib/final_destination.rb:414:in `safe_session' /var/www/discourse/lib/final_destination.rb:365:in `safe_get' /var/www/discourse/lib/final_destination.rb:131:in `get' /var/www/discourse/lib/file_helper.rb:47:in `download' /var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download' /var/www/discourse/lib/tasks/assets.rake:226:in `block (3 levels) in <top (required)>' /var/www/discourse/lib/tasks/assets.rake:225:in `each' /var/www/discourse/lib/tasks/assets.rake:225:in `block (2 levels) in <top (required)>' Tasks: TOP => assets:precompile (See full trace by running task with --trace) Docker Manager: FAILED TO UPGRADE #<RuntimeError: RuntimeError> /var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:159:in `run' /var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:81:in `upgrade' /var/www/discourse/plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:95:in `block in upgrade' /var/www/discourse/plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:91:in `fork' /var/www/discourse/plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:91:in `upgrade' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/basic_implicit_render.rb:6:inbox_tray:

재빌드를 시도해 보겠지만, 이 업그레이드 문제의 원인이 무엇인지 여전히 궁금합니다…