Libvips 업그레이드 오류

Docker(discourse/discourse)를 2026.7.3에서 2026.7.4로 업그레이드하던 중 문제가 발생했습니다. (2026.11.0-latest 버전에서도 동일한 문제가 발생합니다.)

#<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

빌드 버전을 확인해 주실 수 있나요?

표준 설치 방식을 사용하나요?

안녕하세요, David.

Docker Hub의 discourse/discourse(discourse/discourse - Docker Image)를 “redis:7-alpine” 및 “discourse/postgres:latest” 이미지와 함께 사용하고 있습니다.

현재 설정(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'

discourse/discourse 이미지는 여전히 실험적이며, 우리가 정기적으로 테스트하는 대상이 아닙니다. 그래도 사내에 언급해 두었으니, 누가 살펴볼 수 있는지 지켜보겠습니다.

프로덕션 환경 설치의 경우, 표준 설치 절차를 권장합니다.