From c5dd6d82a1f319a53222e80533cdcb053187077d Mon Sep 17 00:00:00 2001 From: Stefan Pejcic Date: Wed, 8 May 2024 09:07:14 +0200 Subject: [PATCH] Create entrypoint.sh --- docker/nginx/entrypoint.sh | 124 +++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 docker/nginx/entrypoint.sh diff --git a/docker/nginx/entrypoint.sh b/docker/nginx/entrypoint.sh new file mode 100644 index 00000000..f1d1fb63 --- /dev/null +++ b/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"