From a037dd92af41f8f7495c51f636e3de17046c59cf Mon Sep 17 00:00:00 2001 From: Stefan Hardegger Date: Sun, 21 Sep 2025 17:21:49 +0200 Subject: [PATCH] fix --- docker-compose.yml | 22 +++++------------- opensearch.Dockerfile | 53 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 16 deletions(-) create mode 100644 opensearch.Dockerfile diff --git a/docker-compose.yml b/docker-compose.yml index 76a4857..a07a582 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -76,23 +76,25 @@ services: opensearch: - image: opensearchproject/opensearch:3.2.0 + build: + context: . + dockerfile: opensearch.Dockerfile # No port mapping - only accessible within the Docker network environment: - cluster.name=storycove-opensearch - node.name=opensearch-node - discovery.type=single-node - bootstrap.memory_lock=false - - "OPENSEARCH_JAVA_OPTS=-Xms128m -Xmx256m" + - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx1g" - "DISABLE_INSTALL_DEMO_CONFIG=true" - "DISABLE_SECURITY_PLUGIN=true" - "DISABLE_PERFORMANCE_ANALYZER_AGENT_CLI=true" deploy: resources: limits: - memory: 512M + memory: 2G reservations: - memory: 256M + memory: 1G ulimits: memlock: soft: -1 @@ -102,18 +104,6 @@ services: hard: 65536 volumes: - opensearch_data:/usr/share/opensearch/data - command: > - bash -c " - echo 'Starting OpenSearch with debug output...' - echo 'Java version:' - java -version - echo 'Memory info:' - free -h - echo 'Disk space:' - df -h - echo 'Starting OpenSearch...' - exec /usr/share/opensearch/opensearch-docker-entrypoint.sh opensearch - " networks: - storycove-network restart: unless-stopped diff --git a/opensearch.Dockerfile b/opensearch.Dockerfile new file mode 100644 index 0000000..4667a56 --- /dev/null +++ b/opensearch.Dockerfile @@ -0,0 +1,53 @@ +# Custom OpenSearch Dockerfile with Java 21 for compatibility +FROM amazoncorretto:21-alpine AS java-base + +# Download and extract OpenSearch +FROM java-base AS opensearch-builder +WORKDIR /tmp +RUN apk add --no-cache curl tar && \ + curl -L https://artifacts.opensearch.org/releases/bundle/opensearch/3.2.0/opensearch-3.2.0-linux-x64.tar.gz | \ + tar -xz && \ + mv opensearch-3.2.0 /usr/share/opensearch + +# Final runtime image +FROM java-base +WORKDIR /usr/share/opensearch + +# Create opensearch user +RUN addgroup -g 1000 opensearch && \ + adduser -u 1000 -G opensearch -s /bin/sh -D opensearch + +# Copy OpenSearch from builder stage +COPY --from=opensearch-builder --chown=opensearch:opensearch /usr/share/opensearch /usr/share/opensearch + +# Install necessary packages +RUN apk add --no-cache bash curl + +# Debug: Check Java installation and set correct paths +RUN which java && java -version && \ + ls -la /usr/lib/jvm/ && \ + ln -sf /usr/lib/jvm/java-21-amazon-corretto /usr/lib/jvm/default-jvm + +# Set environment variables +ENV JAVA_HOME=/usr/lib/jvm/java-21-amazon-corretto +ENV OPENSEARCH_JAVA_HOME=/usr/lib/jvm/java-21-amazon-corretto +ENV PATH=$PATH:$JAVA_HOME/bin + +# Create required directories and disable security plugin +RUN mkdir -p /usr/share/opensearch/data && \ + mkdir -p /usr/share/opensearch/logs && \ + echo "plugins.security.disabled: true" >> /usr/share/opensearch/config/opensearch.yml && \ + echo "discovery.type: single-node" >> /usr/share/opensearch/config/opensearch.yml && \ + echo "cluster.name: storycove-opensearch" >> /usr/share/opensearch/config/opensearch.yml && \ + echo "node.name: opensearch-node" >> /usr/share/opensearch/config/opensearch.yml && \ + echo "bootstrap.memory_lock: false" >> /usr/share/opensearch/config/opensearch.yml && \ + echo "network.host: 0.0.0.0" >> /usr/share/opensearch/config/opensearch.yml && \ + rm -rf /usr/share/opensearch/plugins/opensearch-performance-analyzer && \ + chown -R opensearch:opensearch /usr/share/opensearch + +USER opensearch + +EXPOSE 9200 9300 + +# Use direct startup command since we're using the tarball distribution +ENTRYPOINT ["/usr/share/opensearch/bin/opensearch"] \ No newline at end of file