diff --git a/docker/docker-compose-template.yaml b/docker/docker-compose-template.yaml index e27b51bcc0..aacb551933 100644 --- a/docker/docker-compose-template.yaml +++ b/docker/docker-compose-template.yaml @@ -662,13 +662,14 @@ services: - "${IRIS_SUPER_SERVER_PORT:-1972}:1972" - "${IRIS_WEB_SERVER_PORT:-52773}:52773" volumes: - - ./volumes/iris:/opt/iris + - ./volumes/iris:/durable - ./iris/iris-init.script:/iris-init.script - ./iris/docker-entrypoint.sh:/custom-entrypoint.sh entrypoint: ["/custom-entrypoint.sh"] tty: true environment: TZ: ${IRIS_TIMEZONE:-UTC} + ISC_DATA_DIRECTORY: /durable/iris # Oracle vector database oracle: diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index a0a755f570..1cb327cfe4 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -1348,13 +1348,14 @@ services: - "${IRIS_SUPER_SERVER_PORT:-1972}:1972" - "${IRIS_WEB_SERVER_PORT:-52773}:52773" volumes: - - ./volumes/iris:/opt/iris + - ./volumes/iris:/durable - ./iris/iris-init.script:/iris-init.script - ./iris/docker-entrypoint.sh:/custom-entrypoint.sh entrypoint: ["/custom-entrypoint.sh"] tty: true environment: TZ: ${IRIS_TIMEZONE:-UTC} + ISC_DATA_DIRECTORY: /durable/iris # Oracle vector database oracle: diff --git a/docker/iris/docker-entrypoint.sh b/docker/iris/docker-entrypoint.sh index c8917feb41..1a3b10423b 100755 --- a/docker/iris/docker-entrypoint.sh +++ b/docker/iris/docker-entrypoint.sh @@ -1,28 +1,56 @@ #!/bin/bash set -e -# Function to configure IRIS (idempotent - safe to run multiple times) +# IRIS configuration flag file (stored in durable directory to persist with data) +IRIS_CONFIG_DONE="/durable/.iris-configured" + +# Function to wait for IRIS to be ready +wait_for_iris() { + echo "Waiting for IRIS to be ready..." + local max_attempts=30 + local attempt=1 + while [ "$attempt" -le "$max_attempts" ]; do + if iris qlist IRIS 2>/dev/null | grep -q "running"; then + echo "IRIS is ready." + return 0 + fi + echo "Attempt $attempt/$max_attempts: IRIS not ready yet, waiting..." + sleep 2 + attempt=$((attempt + 1)) + done + echo "ERROR: IRIS failed to start within expected time." >&2 + return 1 +} + +# Function to configure IRIS configure_iris() { - echo "Running IRIS initialization..." + echo "Configuring IRIS for first-time setup..." # Wait for IRIS to be fully started - sleep 5 + wait_for_iris # Execute the initialization script iris session IRIS < /iris-init.script - echo "IRIS initialization completed." + # Mark configuration as done + touch "$IRIS_CONFIG_DONE" + + echo "IRIS configuration completed." } -# Start IRIS for initialization -echo "Starting IRIS for initialization..." -iris start IRIS +# Start IRIS in background for initial configuration if not already configured +if [ ! -f "$IRIS_CONFIG_DONE" ]; then + echo "First-time IRIS setup detected. Starting IRIS for configuration..." -# Configure IRIS (idempotent) -configure_iris + # Start IRIS + iris start IRIS -# Stop IRIS -iris stop IRIS quietly + # Configure IRIS + configure_iris + + # Stop IRIS + iris stop IRIS quietly +fi # Run the original IRIS entrypoint exec /iris-main "$@"