Libvips upgrade error

I’ve a problem upgrading docker (discourse/discourse) from 2026.7.3 to 2026.7.4 (also the 2026.11.0-latest have the same problem):

#<Thread:0x00007f7bea3d8430 /var/www/discourse/lib/discourse.rb:1342 run> terminated with exception (report_on_exception is true):

/var/www/discourse/lib/discourse_vips/client.rb:50:in 'block in DiscourseVips::Client.call': libvips operation failed (DiscourseVips::Error)

	from /var/www/discourse/lib/image_processing/instrumentation.rb:6:in 'ImageProcessing::Instrumentation.instrument'

	from /var/www/discourse/lib/discourse_vips/client.rb:40:in 'DiscourseVips::Client.call'

	from /var/www/discourse/lib/discourse_vips.rb:14:in 'DiscourseVips.version'

	from /var/www/discourse/lib/letter_avatar.rb:140:in 'LetterAvatar.vips_version'

	from /var/www/discourse/lib/letter_avatar.rb:36:in 'LetterAvatar.version'

	from /var/www/discourse/lib/discourse.rb:1343:in 'block in Discourse.preload_rails!'

/var/www/discourse/lib/discourse_vips/client.rb:50:in 'block in DiscourseVips::Client.call': libvips operation failed (DiscourseVips::Error)

	from /var/www/discourse/lib/image_processing/instrumentation.rb:6:in 'ImageProcessing::Instrumentation.instrument'

	from /var/www/discourse/lib/discourse_vips/client.rb:40:in 'DiscourseVips::Client.call'

	from /var/www/discourse/lib/discourse_vips.rb:14:in 'DiscourseVips.version'

	from /var/www/discourse/lib/letter_avatar.rb:140:in 'LetterAvatar.vips_version'

	from /var/www/discourse/lib/letter_avatar.rb:36:in 'LetterAvatar.version'

	from /var/www/discourse/lib/discourse.rb:1343:in 'block in Discourse.preload_rails!'

E, [2026-11-09T11:44:20.275076 #11010] ERROR -- : mold gen=0 pid=11013 reaped (#<Process::Status: pid 11013 exit 1>)

I, [2026-11-09T11:44:20.275357 #11010]  INFO -- : reaped unknown subprocess #<Process::Status: pid 11063 SIGKILL (signal 9)>

/var/www/discourse/vendor/bundle/ruby/4.0.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:179:in 'Pitchfork::HttpServer#start': The initial mold failed to boot (Pitchfork::BootFailure)

	from /var/www/discourse/vendor/bundle/ruby/4.0.0/gems/pitchfork-0.18.2/exe/pitchfork:110:in '<top (required)>'

	from /usr/local/lib/ruby/4.0.0/rubygems.rb:305:in 'Kernel#load'

	from /usr/local/lib/ruby/4.0.0/rubygems.rb:305:in 'Gem.activate_and_load_bin_path'

	from /var/www/discourse/vendor/bundle/ruby/4.0.0/bin/pitchfork:25:in '<main>'

./config/unicorn_launcher: line 93: kill: (11010) - No such process

./config/unicorn_launcher: line 13: kill: (11010) - No such process

(10949) exiting

Can you please check the builds?

Are you using a standard install?

Hello David,
I’m using version discourse/discourse on docker hub (discourse/discourse - Docker Image) with “redis:7-alpine” and “discourse/postgres:latest”.

Here my current configuration (as docker compose):

services:
  redis:
    image: redis:7-alpine
    container_name: redis
    volumes:
      - /volume1/docker/discourse/redis_data:/data:rw
    ports:
      - '6379:6379'
    command: "redis-server --appendonly yes"
    restart: unless-stopped
    labels:
      - 'wud.tag.include=^([0-9]\d*)\-alpine$$'
      - 'wud.watch.digest=true'
      - 'wud.display.name=DiscourseRedis'
      - 'wud.display.icon=mdi:map-search'

  discourse_db:
    image: discourse/postgres:latest
    container_name: discourse_db
    volumes:
      - /volume1/docker/discourse/discourse_postgres:/var/lib/postgresql:rw
      - /volume1/docker/discourse/discourse_postgres_data:/var/lib/postgresql/data:rw
    environment:
      POSTGRES_DB: discourse
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: "***"
      DB_USER: discourse_user
      DB_PASSWORD: "***"
    restart: unless-stopped
    labels:
      - 'wud.watch.digest=true'
      - 'wud.display.name=DiscoursePostgres'
      - 'wud.display.icon=mdi:map-search'

  discourse:
    image: discourse/discourse:2026.7.3
    container_name: discourse
    depends_on:
      - discourse_db
      - redis
    ports:
      - '8093:80'
    volumes:
      - /volume1/docker/discourse/discourse_data:/shared
    environment:
      DISCOURSE_HOSTNAME: my.host.name
      DISCOURSE_DEVELOPER_EMAILS: "my@email.eu"
      DISCOURSE_DB_HOST: discourse_db
      DISCOURSE_DB_PORT: 5432
      DISCOURSE_DB_NAME: discourse
      DISCOURSE_DB_USERNAME: discourse_user
      DISCOURSE_DB_PASSWORD: "***"
      DISCOURSE_REDIS_HOST: redis
      DISCOURSE_REDIS_PORT: 6379
      DISCOURSE_SMTP_ADDRESS: 10.10.x.x
      DISCOURSE_SMTP_PORT: 587
      DISCOURSE_SMTP_ENABLE_START_TLS: true
      DISCOURSE_SMTP_USER_NAME: my
      DISCOURSE_SMTP_PASSWORD: "****"
      #DISCOURSE_SMTP_FORCE_TLS: true
      DISCOURSE_SMTP_DOMAIN: my.domain
      DISCOURSE_SMTP_AUTHENTICATION: login
      DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
      DISCOURSE_NOTIFICATION_EMAIL: noreply@email.eu
      LANG: it_IT.UTF-8
    restart: unless-stopped
    labels:
      - 'wud.tag.include=^([0-9]\d*)\.([0-9]\d*)\.([0-9]\d*)$$'
      - 'wud.watch.digest=true'
      - 'wud.display.name=Discourse'
      - 'wud.display.icon=mdi:map-search'

The discourse/discourse image is still experimental, and isn’t something that we regularly test. That said, I have mentioned it internally so we’ll see if someone can take a look.

For a production installation, we recommend the standard install procedure.