Skip to content

Docker images seem to have dependency issues and don't recognize Elasticsearch #3902

@0xlynett

Description

@0xlynett

I don't see anyone else having these kinds of issues, so it may be as a result of my slightly altered setup.

  • All services can reach each other
  • I'm using Coolify with Docker Compose, which is why I don't use the .env files
  • Manifold version is v8.1.1
  • I removed the "network" stuff from the default Docker Compose config, which doesn't seem like it should produce any of these issues

Apologies if this is the wrong place to put this issue, I couldn't get in the Slack (it requires an email from castironcoding.com)

Images having issues

The Sidekiq API seems to fail with this error, which is odd, as Elasticsearch is indeed Elasticsearch and should be reachable. Elasticsearch is running:

2025-07-30T22:27:48.223Z 1 TID-1d6l WARN: {"context":"Job raised exception","job":{"class":"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper","wrapped":"Searchkick::ReindexV2Job","queue":"searchkick","args":[{"job_class":"Searchkick::ReindexV2Job","job_id":"9929c950-cbb0-4652-adf9-4a3188006aad","provider_job_id":null,"queue_name":"searchkick","priority":null,"arguments":["User","e77bdaca-7c10-4bb0-a30a-725848c89f4d",null,{"routing":null,"index_name":"users_production","_aj_ruby2_keywords":["routing","index_name"]}],"executions":0,"exception_executions":{},"locale":"en","timezone":"UTC","enqueued_at":"2025-07-30T22:16:38Z"}],"retry":true,"jid":"9d194a2aa5089beec848efcb","created_at":1753913798.032209,"enqueued_at":1753914468.187799,"error_message":"The client noticed that the server is not Elasticsearch and we do not support this unknown product.","error_class":"Elasticsearch::UnsupportedProductError","failed_at":1753913798.085063,"retry_count":4,"retried_at":1753914160.706319},"jobstr":"{\"class\":\"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper\",\"wrapped\":\"Searchkick::ReindexV2Job\",\"queue\":\"searchkick\",\"args\":[{\"job_class\":\"Searchkick::ReindexV2Job\",\"job_id\":\"9929c950-cbb0-4652-adf9-4a3188006aad\",\"provider_job_id\":null,\"queue_name\":\"searchkick\",\"priority\":null,\"arguments\":[\"User\",\"e77bdaca-7c10-4bb0-a30a-725848c89f4d\",null,{\"routing\":null,\"index_name\":\"users_production\",\"_aj_ruby2_keywords\":[\"routing\",\"index_name\"]}],\"executions\":0,\"exception_executions\":{},\"locale\":\"en\",\"timezone\":\"UTC\",\"enqueued_at\":\"2025-07-30T22:16:38Z\"}],\"retry\":true,\"jid\":\"9d194a2aa5089beec848efcb\",\"created_at\":1753913798.032209,\"enqueued_at\":1753914468.187799,\"error_message\":\"The client noticed that the server is not Elasticsearch and we do not support this unknown product.\",\"error_class\":\"Elasticsearch::UnsupportedProductError\",\"failed_at\":1753913798.085063,\"retry_count\":4,\"retried_at\":1753914160.706319}"}

[rest of stack trace...]

The Clockwork API fails with this error:

Postgres is up - executing command
Activating bundler (2.2.19) failed:
Could not find 'bundler' (2.2.19) required by your /opt/manifold/api/Gemfile.lock.
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.2.19`
Checked in 'GEM_PATH=/root/.gem/ruby/2.7.0:/usr/local/lib/ruby/gems/2.7.0:/usr/local/bundle', execute `gem env` for more information

To install the version of bundler this project requires, run `gem install bundler -v '2.2.19'`

Config

My Docker Compose config (a lot is duplicated, some stuff is removed):

version: '3'
services:
  postgres:
    image: 'postgres:13-alpine'
    volumes:
      - 'postgres:/var/lib/postgresql/data'
    environment:
      POSTGRES_DB: manifold_production
      POSTGRES_HOST_AUTH_METHOD: trust
      POSTGRES_PASSWORD: harmlessifrevealedasitsalllocal
  elasticsearch:
    image: 'docker.elastic.co/elasticsearch/elasticsearch:5.6.7'
    environment:
      ES_JAVA_OPTS: '-Xms512m -Xmx512m'
      xpack.security.enabled: 'false'
  redis:
    image: 'redis:alpine'
    volumes:
      - 'redis:/data'
  api_cable:
    image: 'manifoldscholarship/manifold-api:v8.1.1'
    volumes:
      - 'public-api-data:/opt/manifold/api/public'
      - 'manifold-sockets:/manifold_sockets'
    environment:
      - 'DOMAIN=${FQDN_CLIENT}'
      - SSL_ENABLED=true
      - API_SOCKET=/manifold_sockets/manifold-api
      - API_CABLE_SOCKET=/manifold_sockets/manifold-cable
      - 'ELASTICSEARCH_URL=http://elasticsearch:9200'
      - RAILS_ENV=production
      - RAILS_SECRET_KEY=REDACTED
      - RAILS_DB_USER=postgres
      - RAILS_DB_PASS=harmlessifrevealedasitsalllocal
      - RAILS_DB_HOST=postgres
      - RAILS_DB_PORT=5432
      - RAILS_DB_NAME=manifold_production
      - 'RAILS_REDIS_URL=redis://redis:6379'
      - 'DATABASE_URL=postgres://postgres:harmlessifrevealedasitsalllocal@postgres:5432/manifold_production'
    command:
      - ./start-and-run
      - bin/cable
  api_clockwork:
    image: 'manifoldscholarship/manifold-api:v8.1.1'
    volumes:
      - 'public-api-data:/opt/manifold/api/public'
      - 'manifold-sockets:/manifold_sockets'
    environment:
      - 'DOMAIN=${FQDN_CLIENT}'
      - SSL_ENABLED=true
      - API_SOCKET=/manifold_sockets/manifold-api
      - API_CABLE_SOCKET=/manifold_sockets/manifold-cable
      - 'ELASTICSEARCH_URL=http://elasticsearch:9200'
      - RAILS_ENV=production
      - RAILS_SECRET_KEY=REDACTED
      - RAILS_DB_USER=postgres
      - RAILS_DB_PASS=harmlessifrevealedasitsalllocal
      - RAILS_DB_HOST=postgres
      - RAILS_DB_PORT=5432
      - RAILS_DB_NAME=manifold_production
      - 'RAILS_REDIS_URL=redis://redis:6379'
      - 'DATABASE_URL=postgres://postgres:harmlessifrevealedasitsalllocal@postgres:5432/manifold_production'
    command:
      - ./start-and-run
      - 'bin/zhong zhong.rb'
  api_rails:
    image: 'manifoldscholarship/manifold-api:v8.1.1'
    volumes:
      - 'public-api-data:/opt/manifold/api/public'
      - 'manifold-sockets:/manifold_sockets'
    environment:
      - 'DOMAIN=${FQDN_CLIENT}'
      - SSL_ENABLED=true
      - API_SOCKET=/manifold_sockets/manifold-api
      - API_CABLE_SOCKET=/manifold_sockets/manifold-cable
      - 'ELASTICSEARCH_URL=http://elasticsearch:9200'
      - RAILS_ENV=production
      - RAILS_SECRET_KEY=REDACTED
      - RAILS_DB_USER=postgres
      - RAILS_DB_PASS=harmlessifrevealedasitsalllocal
      - RAILS_DB_HOST=postgres
      - RAILS_DB_PORT=5432
      - RAILS_DB_NAME=manifold_production
      - 'RAILS_REDIS_URL=redis://redis:6379'
      - 'DATABASE_URL=postgres://postgres:harmlessifrevealedasitsalllocal@postgres:5432/manifold_production'
    command:
      - ./start-and-run
      - 'bin/puma -C config/puma.rb'
  api_sidekiq:
    image: 'manifoldscholarship/manifold-api:v8.1.1'
    volumes:
      - 'public-api-data:/opt/manifold/api/public'
      - 'manifold-sockets:/manifold_sockets'
    environment:
      - 'DOMAIN=${FQDN_CLIENT}'
      - SSL_ENABLED=true
      - API_SOCKET=/manifold_sockets/manifold-api
      - API_CABLE_SOCKET=/manifold_sockets/manifold-cable
      - 'ELASTICSEARCH_URL=http://elasticsearch:9200'
      - RAILS_ENV=production
      - RAILS_SECRET_KEY=REDACTED
      - RAILS_DB_USER=postgres
      - RAILS_DB_PASS=harmlessifrevealedasitsalllocal
      - RAILS_DB_HOST=postgres
      - RAILS_DB_PORT=5432
      - RAILS_DB_NAME=manifold_production
      - 'RAILS_REDIS_URL=redis://redis:6379'
      - 'DATABASE_URL=postgres://postgres:harmlessifrevealedasitsalllocal@postgres:5432/manifold_production'
    command:
      - ./start-and-run
      - bin/sidekiq
  client:
    image: 'manifoldscholarship/manifold-client:v8.1.1'
    environment:
      - 'DOMAIN=${FQDN_CLIENT}'
      - 'CLIENT_BROWSER_API_URL=${FQDN_CLIENT}'
      - 'CLIENT_BROWSER_API_CABLE_URL=${FQDN_CLIENT}/cable'
      - SSL_ENABLED=true
      - API_SOCKET=/manifold_sockets/manifold-api
      - API_CABLE_SOCKET=/manifold_sockets/manifold-cable
      - CLIENT_SERVER_PORT=8080
      - NODE_ENV=production
      - 'ELASTICSEARCH_URL=http://elasticsearch:9200'
      - CLIENT_SERVER_PROXIES=true
    volumes:
      - 'public-api-data:/opt/manifold/api/public'
      - 'manifold-sockets:/manifold_sockets'
    command: 'yarn run start-docker'
volumes:
  manifold-data:
  manifold-sockets:
  postgres:
  redis:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions