Error al actualizar Discourse

Hi there. I got this error when upgrading Discourse. Do you guys know how to solve it?

here is my discourse version

<meta name="generator" content="Discourse 3.4.0.beta2-dev - https://github.com/discourse/discourse version 41c3c5745e0611828cb6ed84e5e625faf12df13a">

Operating-System information

NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

docker version

Docker version 26.1.0, build 9714adc

/var/discourse/containers/app.yml

## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## will be set automatically by bootstrap based on detected RAM, or you can override
  db_shared_buffers: "256MB"

  ## can improve sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"

  ## Which Git revision should this container use? (default: tests-passed)
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  EMBER_CLI_PROD_ASSETS: 1
  # DISCOURSE_DEFAULT_LOCALE: en

  ## How many concurrent web requests are supported? Depends on memory and CPU cores.
  ## will be set automatically by bootstrap based on detected CPUs, or you can override
  UNICORN_WORKERS: 4

  ## TODO: The domain name this Discourse instance will respond to
  ## Required. Discourse will not work with a bare IP number.
  DISCOURSE_HOSTNAME: discourse.abcdef.com

  ## Uncomment if you want the container to be started with the same
  ## hostname (-h option) as specified above (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'email@abcdef.com'

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS, username, and password are required
  # WARNING the char '#' in SMTP password can cause problems!
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: yummy@abcdef.com
  DISCOURSE_SMTP_PASSWORD: "aaaaaaaaaaaaaaaaaaaaaaaa-bbbbbbbb-ccccccccccc"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
  DISCOURSE_SMTP_DOMAIN: abcdef.com
  DISCOURSE_NOTIFICATION_EMAIL: yummy@abcdef.com

  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  LETSENCRYPT_ACCOUNT_EMAIL: yummy@abcdef.com

  ## The http or https CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  
  ## The maxmind geolocation IP address key for IP address lookup
  ## see https://meta.discourse.org/t/-/137387/23 for details
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/discourse/discourse-chat-integration.git
          - git clone https://github.com/discourse/discourse-cakeday.git
          - git clone https://github.com/discourse/discourse-akismet.git
          - git clone https://github.com/discourse/discourse-github.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-translator.git
          - git clone https://github.com/discourse/discourse-code-review.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/discourse/discourse-reactions.git
          - git clone https://github.com/discourse/discourse-automation.git
          - git clone https://github.com/discourse/discourse-tooltips.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-encrypt.git
          - git clone https://github.com/discourse/discourse-rss-polling.git
          - git clone https://github.com/discourse/discourse-user-card-badges.git
          - git clone https://github.com/discourse/discourse-teambuild.git
          - git clone https://github.com/discourse/discourse-prometheus.git
          - git clone https://github.com/discourse/discourse-calendar.git
          - git clone https://github.com/discourse/discourse-docs.git
          - git clone https://github.com/discourse/discourse-gamification.git
          - git clone https://github.com/discourse/discourse-bbcode-color.git
          - git clone https://github.com/discourse/discourse-follow.git
          - git clone https://github.com/discourse/discourse-templates.git
          - git clone https://github.com/discourse/discourse-shared-edits.git
          - git clone https://github.com/discourse/discourse-category-experts.git
          - git clone https://github.com/discourse/discourse-graphviz.git
          - git clone https://github.com/discourse/discourse-post-voting.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-staff-alias.git
          - git clone https://github.com/discourse/discourse-policy.git
          - git clone https://github.com/discourse/discourse-whos-online.git
          - git clone https://github.com/discourse/discourse-bcc.git
          - git clone https://github.com/discourse/discourse-ai.git
          - git clone https://github.com/discourse/discourse-algolia.git

## Any custom commands to run after building
run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

this is the command that I issued to upgrade Discourse.

cd /var/discourse
./launcher rebuild app

error

I, [2025-04-10T15:51:32.679706 #1]  INFO -- : > cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
I, [2025-04-10T15:51:33.940918 #1]  INFO -- : Successfully installed bundler-2.6.4
1 gem installed

I, [2025-04-10T15:51:33.941573 #1]  INFO -- : > cd /var/www/discourse && find /var/www/discourse ! -user discourse -exec chown discourse {} \+
I, [2025-04-10T15:51:39.190810 #1]  INFO -- : 
I, [2025-04-10T15:51:39.191737 #1]  INFO -- : > cd /var/www/discourse && if [ -f yarn.lock ]; then
  if [ -d node_modules/.pnpm ]; then
    echo "This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile'
fi
I, [2025-04-10T15:51:44.558550 #1]  INFO -- : Detected yarn-managed node_modules. Performing one-time cleanup...
cleanup done
 ERR_PNPM_UNSUPPORTED_ENGINE  Unsupported environment (bad pnpm and/or Node.js version)

Your Node version is incompatible with "/var/www/discourse".

Expected version: >= 20
Got: v18.20.4

This is happening because the package's manifest has an engines.node field specified.
To fix this issue, install the required Node version.

I, [2025-04-10T15:51:44.559546 #1]  INFO -- : Terminating async processes
I, [2025-04-10T15:51:44.559682 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 36
I, [2025-04-10T15:51:44.559994 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 104
104:signal-handler (1744300304) Received SIGTERM scheduling shutdown...
2025-04-10 15:51:44.560 UTC [36] LOG:  received fast shutdown request
2025-04-10 15:51:44.581 UTC [36] LOG:  aborting any active transactions
104:M 10 Apr 2025 15:51:44.585 # User requested shutdown...
104:M 10 Apr 2025 15:51:44.586 * Saving the final RDB snapshot before exiting.
2025-04-10 15:51:44.591 UTC [36] LOG:  background worker "logical replication launcher" (PID 51) exited with exit code 1
2025-04-10 15:51:44.598 UTC [46] LOG:  shutting down
2025-04-10 15:51:44.634 UTC [36] LOG:  database system is shut down
104:M 10 Apr 2025 15:51:44.947 * DB saved on disk
104:M 10 Apr 2025 15:51:44.948 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && if [ -f yarn.lock ]; then
  if [ -d node_modules/.pnpm ]; then
    echo "This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile'
fi failed with return #<Process::Status: pid 649 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"yarn", "cmd"=>["if [ -f yarn.lock ]; then\n  if [ -d node_modules/.pnpm ]; then\n    echo \"This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up...\"\n    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +\n  fi\n  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'\nelse\n  su discourse -c 'CI=1 pnpm install --frozen-lockfile'\nfi"]}
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.
e6f9cd9a001c3b9e1208284621b73506ba021b2350e0c9cca235941538863fd9

node verion in current discourse-image

¿Cuál es la memoria de tu servidor? demás, tienes configurado un archivo de intercambio (swap file)?

Hola.

Aquí está la información de nuestra memoria y paginación

free -h
              total        used        free      shared  buff/cache   available
Mem:          3.8Gi       2.1Gi       274Mi       275Mi       1.5Gi       1.2Gi
Swap:         2.0Gi       117Mi       1.9Gi

1 me gusta

Solo puedo suponer que la causa del error es el gran salto en versiones, aproximadamente 7 meses de actualizaciones, o la gran cantidad de plugins.

Lo primero que intentaría es repetir la actualización desde la línea de comandos. Creo que esto puede ayudar, ¡y no es solo superstición!

Lo segundo que intentaría es comentar todos tus plugins en el archivo yml, e intentar la actualización de nuevo. Si tiene éxito, puedes volver a activarlos, quizás todos a la vez o quizás con más cuidado.

Pero posiblemente alguien más tenga un consejo más informado.

(En mi foro, ahora en la versión 3.5.0.beta2-dev, tengo la versión de nodo v22.14.0)

2 Me gusta

¿Puedes compartir por favor la salida de docker images? Parece que estás atascado en una imagen de contenedor antigua de alguna manera.

1 me gusta

Hola. Creo que aquí está lo que pides

REPOSITORY                 TAG                 IMAGE ID       CREATED         SIZE
local_discourse/app        latest              dfd8027ee473   6 meses atrás    4.75GB
discourse/base             2.0.20240825-0027   9dc96b6115cb   7 meses atrás    3.38GB

[cita=“Ed_S, publicación:5, tema:361352”]
Lo primero que intentaría es repetir la actualización desde la línea de comandos. Creo que esto puede ayudar, ¡y no es solo superstición!
[/cita]

No funcionó

[cita=“Ed_S, publicación:5, tema:361352”]
Lo segundo que intentaría es comentar todos tus plugins en el archivo yml, intenta la actualización nuevamente. Si tiene éxito, puedes volver a activarlos, quizás todos de una vez o quizás con más cuidado.
[/cita]

Aún no lo hice. Lo probaré en un entorno de desarrollo. gracias

Sí, como sospechaba, parece que te quedaste atascado en una imagen antigua.

¿Cuál es la salida de

cd /var/discourse
git pull

?

1 me gusta

Hola Falco. Aquí está la salida

git pull origin main

From https://github.com/discourse/discourse_docker
 * branch            main       -> FETCH_HEAD
Eliminando launcher_go/v2/utils/utils_suite_test.go
Eliminando launcher_go/v2/utils/find_config_test.go
Eliminando launcher_go/v2/utils/find_config.go
Eliminando launcher_go/v2/utils/consts.go
Eliminando launcher_go/v2/utils/cmd_runner.go
Eliminando launcher_go/v2/test_utils/utils.go
Eliminando launcher_go/v2/test/containers/web.template.yml
Eliminando launcher_go/v2/test/containers/web_only.yml
Eliminando launcher_go/v2/test/containers/test3.not-a-yaml
Eliminando launcher_go/v2/test/containers/test2.yaml
Eliminando launcher_go/v2/test/containers/test.yml
Eliminando launcher_go/v2/test/containers/standalone.yml
Eliminando launcher_go/v2/main.go
Eliminando launcher_go/v2/go_suite_test.go
Eliminando launcher_go/v2/go.sum
Eliminando launcher_go/v2/go.mod
Eliminando launcher_go/v2/docker/docker_suite_test.go
Eliminando launcher_go/v2/docker/commands_test.go
Eliminando launcher_go/v2/docker/commands.go
Eliminando launcher_go/v2/config/config_test.go
Eliminando launcher_go/v2/config/config_suite_test.go
Eliminando launcher_go/v2/config/config.go
Eliminando launcher_go/v2/cli_runtime_test.go
Eliminando launcher_go/v2/cli_runtime.go
Eliminando launcher_go/v2/cli_build_test.go
Eliminando launcher_go/v2/cli_build.go
Eliminando launcher_go/v2/bin/.gitignore
Eliminando launcher_go/v2/Makefile
Eliminando launcher_go/README.md
Eliminando image/monitor/src/monitor.rb
Eliminando image/monitor/Dockerfile
Eliminando image/discourse_fast_switch/create_switch.rb
Eliminando image/discourse_fast_switch/Dockerfile
Eliminando image/discourse_bench/run_bench.sh
Eliminando image/discourse_bench/Dockerfile
Fusionando automáticamente .gitignore
Eliminando .github/workflows/launcher_go.yml
Fusión realizada por la estrategia 'recursive'.
 .github/workflows/build.yml                     |  65 +++++++++++++++++++++--------
 .github/workflows/launcher_go.yml               |  45 --------------------
 .gitignore                                      |   1 +
 README.md                                       |   7 +++-
 discourse-setup                                 |   4 +-
 image/README.md                                 |  12 +-----
 image/auto_build.rb                             |  16 ++++++-
 image/base/Dockerfile                           | 160 ++++++++++++++++++++++++++++++++++++++++++-----------------------------
 image/base/install-imagemagick                  |  27 ++++++------
 image/base/install-jemalloc                     |   6 +--
 image/base/install-nginx                        |   4 +-
 image/base/install-oxipng                       |   8 +++-
 image/base/install-redis                        |   4 +-
 image/base/install-rust                         |   2 +-
 image/discourse_bench/Dockerfile                |  34 ---------------
 image/discourse_bench/run_bench.sh              |  19 ---------
 image/discourse_dev/postgres_dev.template.yml   |  10 ++---
 image/discourse_fast_switch/Dockerfile          |  23 -----------
 image/discourse_fast_switch/create_switch.rb    |  25 -----------
 image/discourse_test/Dockerfile                 |   7 +--
 image/monitor/Dockerfile                        |  13 ------
 image/monitor/src/monitor.rb                    |  98 -------------------------------------------
 launcher                                        |   4 +-
 launcher_go/README.md                           | 134 -----------------------------------------------------------
 launcher_go/v2/Makefile                         |  10 -----
 launcher_go/v2/bin/.gitignore                   |   1 -
 launcher_go/v2/cli_build.go                     | 180 -------------------------------------------------------------------------------
 launcher_go/v2/cli_build_test.go                | 254 ----------------------------------------------------------------------------------------------------------------
 launcher_go/v2/cli_runtime.go                   | 373 --------------------------------------------------------------------------------------------------------------------------------------------------------------------
 launcher_go/v2/cli_runtime_test.go              | 204 --------------------------------------------------------------------------
 launcher_go/v2/config/config.go                 | 231 ------------------------------------------------------------------------------------------------------
 launcher_go/v2/config/config_suite_test.go      |  13 ------
 launcher_go/v2/config/config_test.go            |  61 ---------------------------
 launcher_go/v2/docker/commands.go               | 324 ----------------------------------------------------------------------------------------------------------------------------------------------
 launcher_go/v2/docker/commands_test.go          |  43 -------------------
 launcher_go/v2/docker/docker_suite_test.go      |  13 ------
 launcher_go/v2/go.mod                           |  30 --------------
 launcher_go/v2/go.sum                           |  64 -----------------------------
 launcher_go/v2/go_suite_test.go                 |  18 --------
 launcher_go/v2/main.go                          |  92 -----------------------------------------
 launcher_go/v2/test/containers/standalone.yml   | 109 ------------------------------------------------
 launcher_go/v2/test/containers/test.yml         | 121 -----------------------------------------------------
 launcher_go/v2/test/containers/test2.yaml       |   0
 launcher_go/v2/test/containers/test3.not-a-yaml |   0
 launcher_go/v2/test/containers/web_only.yml     | 114 --------------------------------------------------
 launcher_go/v2/test/templates/web.template.yml  | 443 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 launcher_go/v2/test_utils/utils.go              |  42 -------------------
 launcher_go/v2/utils/cmd_runner.go              |  28 -------------
 launcher_go/v2/utils/consts.go                  |  50 ----------------------
 launcher_go/v2/utils/find_config.go             |  51 -----------------------
 launcher_go/v2/utils/find_config_test.go        |  39 ------------------
 launcher_go/v2/utils/utils_suite_test.go        |  13 ------
 templates/import/phpbb3.template.yml            |   5 ++-
 templates/postgres.10.template.yml              |   3 +-
 templates/postgres.12.template.yml              |   3 +-
 templates/postgres.13.template.yml              | 175 +++++++++++++++++++++++++++++------------------------------------------------
 templates/postgres.15.template.yml              |  53 +++++++++++-------------
 templates/postgres.9.5.template.yml             |   3 +-
 templates/postgres.template.yml                 |  96 +++++++++++++++++++++++++------------------
 templates/web.socketed.template.yml             |   4 +-
 templates/web.ssl.template.yml                  |  32 +++++++--------
 templates/web.template.yml                      |  12 ++----
 62 files changed, 382 insertions(+), 3653 deletions(-)
 delete mode 100644 .github/workflows/launcher_go.yml
 delete mode 100644 image/discourse_bench/Dockerfile
 delete mode 100644 image/discourse_bench/run_bench.sh
 delete mode 100644 image/discourse_fast_switch/Dockerfile
 delete mode 100644 image/discourse_fast_switch/create_switch.rb
 delete mode 100644 image/monitor/Dockerfile
 delete mode 100644 image/monitor/src/monitor.rb
 delete mode 100644 launcher_go/README.md
 delete mode 100644 launcher_go/v2/Makefile
 delete mode 100644 launcher_go/v2/bin/.gitignore
 delete mode 100644 launcher_go/v2/cli_build.go
 delete mode 100644 launcher_go/v2/cli_build_test.go
 delete mode 100644 launcher_go/v2/cli_runtime.go
 delete mode 100644 launcher_go/v2/cli_runtime_test.go
 delete mode 100644 launcher_go/v2/config/config.go
 delete mode 100644 launcher_go/v2/config/config_suite_test.go
 delete mode 100644 launcher_go/v2/config/config_test.go
 delete mode 100644 launcher_go/v2/docker/commands.go
 delete mode 100644 launcher_go/v2/docker/commands_test.go
 delete mode 100644 launcher_go/v2/docker/docker_suite_test.go
 delete mode 100644 launcher_go/v2/go.mod
 delete mode 100644 launcher_go/v2/go.sum
 delete mode 100644 launcher_go/v2/go_suite_test.go
 delete mode 100644 launcher_go/v2/main.go
 delete mode 100644 launcher_go/v2/test/containers/standalone.yml
 delete mode 100644 launcher_go/v2/test/containers/test.yml
 delete mode 100644 launcher_go/v2/test/containers/test2.yaml
 delete mode 100644 launcher_go/v2/test/containers/test3.not-a-yaml
 delete mode 100644 launcher_go/v2/test/containers/web_only.yml
 delete mode 100644 launcher_go/v2/test/templates/web.template.yml
 delete mode 100644 launcher_go/v2/test_utils/utils.go
 delete mode 100644 launcher_go/v2/utils/cmd_runner.go
 delete mode 100644 launcher_go/v2/utils/consts.go
 delete mode 100644 launcher_go/v2/utils/find_config.go
 delete mode 100644 launcher_go/v2/utils/find_config_test.go
 delete mode 100644 launcher_go/v2/utils/utils_suite_test.go

Vuelve a ejecutar el pull.

git pull origin main

From https://github.com/discourse/discourse_docker
 * branch            main       -> FETCH_HEAD
Ya está actualizado.
1 me gusta

Ahora que estás actualizado, intenta una reconstrucción.

1 me gusta

Estos son los pasos que utilicé para actualizar discourse. funciona

@Falco @Ed_S Gracias por tu ayuda

cd /var/discourse
git pull origin main
./launcher rebuild app
1 me gusta

Esta solución (seguida de una reconstrucción) también funcionó para mí. ¡Gracias!

Sheila Ruth

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.