فهرست منبع

Create entrypoint.sh

Stefan Pejcic 1 سال پیش
والد
کامیت
c5dd6d82a1
1فایلهای تغییر یافته به همراه124 افزوده شده و 0 حذف شده
  1. 124 0
      docker/nginx/entrypoint.sh

+ 124 - 0
docker/nginx/entrypoint.sh

@@ -0,0 +1,124 @@
+#!/bin/bash
+echo "Container is starting..."
+
+# Get the current container's IP address
+CONTAINER_IP=$(hostname -i)
+
+# Get the container's gateway IP address
+GATEWAY_IP=$(ip route | awk '/default/ { print $3 }')
+
+# Old IP address to be replaced on docker run
+OLD_IP="tst"
+
+
+: '
+START SERVICES
+On unpause conditionally start only those services that user already enabled
+'
+
+MONGODB_STATUS="off"
+ELASTICSEARCH_STATUS="off"
+REDIS_STATUS="off"
+MEMCACHED_STATUS="off"
+SSHD_STATUS="off"
+PHP56FPM_STATUS="off"
+PHP70FPM_STATUS="off"
+PHP71FPM_STATUS="off"
+PHP72FPM_STATUS="off"
+PHP73FPM_STATUS="off"
+PHP74FPM_STATUS="off"
+PHP80FPM_STATUS="off"
+PHP81FPM_STATUS="off"
+PHP82FPM_STATUS="off"
+PHP83FPM_STATUS="off"
+PHP84FPM_STATUS="off"
+MYSQL_STATUS="off"
+CRON_STATUS="off"
+NGINX_STATUS="off"
+
+start_service() {
+    if [ "$1" == "on" ]; then
+        echo "Starting $2..."
+        service "$2" start
+    fi
+}
+
+start_service "$MONGODB_STATUS" "mongodb"
+start_service "$ELASTICSEARCH_STATUS" "elasticsearch"
+start_service "$REDIS_STATUS" "redis-server"
+start_service "$MEMCACHED_STATUS" "memcached"
+start_service "$SSHD_STATUS" "ssh"
+start_service "$PHP56FPM_STATUS" "php5.6-fpm"
+start_service "$PHP70FPM_STATUS" "php7.0-fpm"
+start_service "$PHP71FPM_STATUS" "php7.1-fpm"
+start_service "$PHP72FPM_STATUS" "php7.2-fpm"
+start_service "$PHP73FPM_STATUS" "php7.3-fpm"
+start_service "$PHP74FPM_STATUS" "php7.4-fpm"
+start_service "$PHP80FPM_STATUS" "php8.0-fpm"
+start_service "$PHP81FPM_STATUS" "php8.1-fpm"
+start_service "$PHP82FPM_STATUS" "php8.2-fpm"
+start_service "$PHP83FPM_STATUS" "php8.3-fpm"
+start_service "$PHP84FPM_STATUS" "php8.4-fpm"
+start_service "$MYSQ_STATUS" "mysql"
+start_service "$CRON_STATUS" "cron"
+start_service "$NGINX_STATUS" "nginx"
+
+
+: '
+CRON
+fix for https://github.com/stefanpejcic/OpenPanel/issues/75
+'
+chown :crontab /var/spool/cron/crontabs/
+
+
+
+
+: '
+NGINX
+Enable all user websites and create directory for access logs.
+'
+
+
+
+# Function to update IP in nginx config files
+replace_gateway_ip_and_ip_in_sites() {
+    local conf_dir="/etc/nginx/sites-available"
+    
+    if [ -n "$GATEWAY_IP" ]; then
+        for conf_file in "$conf_dir"/*; do
+            if [ -f "$conf_file" ]; then
+                sed -i "s/set_real_ip_from[[:space:]]*[^;]*;/set_real_ip_from $GATEWAY_IP;/g" "$conf_file"
+                echo "Updated $conf_file with GATEWAY_IP."
+            fi
+        done
+
+        if [ -n "$OLD_IP" ]; then
+            for file in $conf_dir; do
+                if [ -f "$file" ]; then
+                    echo "Updating IP in $file..."
+                    sed -i "s/$OLD_IP/$CONTAINER_IP/g" "$file"
+                    echo "Linking $file to nginx sites-enabled..."
+                    ln -s "$file" /etc/nginx/sites-enabled/
+                fi
+            done
+        fi
+    else
+        echo "Error: GATEWAY_IP is not set."
+    fi
+}
+
+replace_gateway_ip_and_ip_in_sites
+
+
+sites_available_dir="/etc/nginx/sites-available"
+
+if [ "$(ls -A $sites_available_dir | grep -v 'default')" ]; then
+    service nginx start
+    echo "Nginx service started."
+else
+    echo "No websites found in $sites_available_dir. Nginx service not started automatically."
+fi
+
+
+# Save the current IP for reuse
+sed -i "s/$OLD_IP/$CONTAINER_IP/g" "$0"