Restructured project by moving files from subfolder to main directory
This commit is contained in:
106
start.sh
Normal file
106
start.sh
Normal file
@@ -0,0 +1,106 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Source environment variables
|
||||
source /app/.env
|
||||
|
||||
# Function to generate a random password
|
||||
generate_password() {
|
||||
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1
|
||||
}
|
||||
|
||||
# Create a secrets directory in data (which is writable)
|
||||
mkdir -p /app/data/secrets
|
||||
|
||||
# Check for initialization status
|
||||
if [[ ! -f /app/data/.initialized ]]; then
|
||||
echo "Fresh installation, initializing..."
|
||||
|
||||
# Generate and store passwords
|
||||
if [ -z "$ELASTIC_PASSWORD" ]; then
|
||||
ELASTIC_PASSWORD=$(generate_password)
|
||||
echo "Generated new secure password for Elasticsearch user 'elastic'"
|
||||
fi
|
||||
echo "$ELASTIC_PASSWORD" > /app/data/secrets/elastic_password
|
||||
|
||||
# Mark as initialized
|
||||
touch /app/data/.initialized
|
||||
echo "Initialization complete."
|
||||
else
|
||||
echo "Loading existing configuration..."
|
||||
# Load existing passwords
|
||||
if [ -f "/app/data/secrets/elastic_password" ]; then
|
||||
ELASTIC_PASSWORD=$(cat /app/data/secrets/elastic_password)
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set up the correct directories
|
||||
mkdir -p /app/data/elasticsearch
|
||||
mkdir -p /app/data/logs
|
||||
mkdir -p /app/data/config
|
||||
|
||||
# Copy elasticsearch.yml to config directory if it doesn't exist
|
||||
if [ ! -f /app/data/config/elasticsearch.yml ]; then
|
||||
cp /app/data/config/elasticsearch.yml.orig /app/data/config/elasticsearch.yml || true
|
||||
# If the original doesn't exist, copy from the one we bundled
|
||||
if [ ! -f /app/data/config/elasticsearch.yml ]; then
|
||||
cp /app/data/config/elasticsearch.yml.orig /app/data/config/elasticsearch.yml 2>/dev/null || cp /app/elasticsearch.yml /app/data/config/elasticsearch.yml 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ensure permissions are correct
|
||||
chown -R elasticsearch:elasticsearch /app/data/elasticsearch /app/data/logs /app/data/config
|
||||
|
||||
# Print the network interfaces for debugging
|
||||
echo "Network interfaces:"
|
||||
ip addr show
|
||||
|
||||
# Start Elasticsearch in the background
|
||||
echo "Starting Elasticsearch..."
|
||||
cd /usr/share/elasticsearch
|
||||
su -c "ES_PATH_CONF=/app/data/config /usr/share/elasticsearch/bin/elasticsearch -d -p /app/data/elasticsearch.pid" elasticsearch
|
||||
|
||||
# Wait for Elasticsearch to be up
|
||||
echo "Waiting for Elasticsearch to start..."
|
||||
attempts=0
|
||||
max_attempts=60
|
||||
until $(curl --output /dev/null --silent --head --fail http://localhost:9200); do
|
||||
printf '.'
|
||||
sleep 5
|
||||
|
||||
attempts=$((attempts+1))
|
||||
|
||||
if [ $attempts -ge $max_attempts ]; then
|
||||
echo "Elasticsearch failed to start after 5 minutes. Check logs at /app/data/logs/"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo "Elasticsearch is up and running!"
|
||||
|
||||
# Now that Elasticsearch is running, set the elastic user password
|
||||
echo "Setting elastic user password..."
|
||||
cd /usr/share/elasticsearch
|
||||
echo "y" | bin/elasticsearch-reset-password -u elastic -b -p "$ELASTIC_PASSWORD" --url "http://localhost:9200" || true
|
||||
|
||||
# Display the credentials
|
||||
echo "-----------------------------"
|
||||
echo "Elasticsearch is ready to use!"
|
||||
echo "URL: http://localhost:9200"
|
||||
echo ""
|
||||
echo "Authentication credentials:"
|
||||
echo " User: elastic"
|
||||
echo " Password: $ELASTIC_PASSWORD"
|
||||
echo "-----------------------------"
|
||||
|
||||
# Create a credentials file for reference
|
||||
cat > /app/data/credentials.txt << EOL
|
||||
Elasticsearch credentials:
|
||||
URL: http://localhost:9200
|
||||
User: elastic
|
||||
Password: $ELASTIC_PASSWORD
|
||||
EOL
|
||||
|
||||
echo "Credentials saved to /app/data/credentials.txt"
|
||||
|
||||
# Keep the script running to prevent the container from exiting
|
||||
tail -f /app/data/logs/*.log 2>/dev/null || sleep infinity
|
||||
Reference in New Issue
Block a user