diff --git a/docker/zammad/Dockerfile b/docker/zammad/Dockerfile index d16b21b..cbfbdbe 100644 --- a/docker/zammad/Dockerfile +++ b/docker/zammad/Dockerfile @@ -42,6 +42,15 @@ RUN pnpm install --frozen-lockfile # This extracts addon files including CoffeeScript, Vue components, TypeScript, and CSS RUN ruby contrib/link/install.rb +# Fix OpenSearch compatibility: Replace 'flattened' with 'flat_object' +# Elasticsearch uses 'flattened' but OpenSearch uses 'flat_object' +# Without this fix, search index creation fails with: +# [o.o.c.m.MetadataCreateIndexService] failed on parsing mappings on index creation +# org.opensearch.index.mapper.MapperParsingException: Failed to parse mapping [_doc]: +# No handler for type [flattened] declared on field [preferences] +# See: https://github.com/zammad/zammad/blob/bfd2f5befc3aec3fe607a5b6146788ec9af461e4/lib/search_index_backend.rb#L896 +RUN sed -i "s/'flattened'/'flat_object'/g" /opt/zammad/lib/search_index_backend.rb + # Precompile assets with addon CoffeeScript files included # Use ZAMMAD_SAFE_MODE=1 and dummy DATABASE_URL to avoid needing real database RUN touch db/schema.rb && \ @@ -93,6 +102,8 @@ COPY --from=builder --chown=zammad:zammad /opt/zammad/app/policies/controllers/* COPY --from=builder --chown=zammad:zammad /opt/zammad/config/initializers/*cdr* /opt/zammad/config/initializers/ COPY --from=builder --chown=zammad:zammad /opt/zammad/config/routes/*cdr* /opt/zammad/config/routes/ COPY --from=builder --chown=zammad:zammad /opt/zammad/lib/cdr* /opt/zammad/lib/ +# CRITICAL: Copy modified search_index_backend.rb with OpenSearch fix +COPY --from=builder --chown=zammad:zammad /opt/zammad/lib/search_index_backend.rb /opt/zammad/lib/search_index_backend.rb COPY --from=builder --chown=zammad:zammad /opt/zammad/public/assets/images/icons/*cdr* /opt/zammad/public/assets/images/icons/ COPY --from=builder --chown=zammad:zammad /opt/zammad/app/views/mailer/ticket_create/ /opt/zammad/app/views/mailer/ticket_create/ COPY --from=builder --chown=zammad:zammad /opt/zammad/public/assets/images/logo* /opt/zammad/public/assets/images/