Modify shellhttpd Container

To change the environment values on the fly without restarting the application, you have to edit the httpd.sh file.

Open a new terminal in your host machine and find the container folder used in the previous tutorial.

cd containers/
Copy to clipboard

Edit the file httpd.sh according to the example below:

gedit shellhttpd/httpd.sh
Copy to clipboard

shellhttpd/httpd.sh:

#!/bin/sh -e

PORT="${PORT-8080}"
MSG="${MSG-FoundriesFactory}"

while true; do
        [ -f /home/shellhttpd/shellhttpd.conf ] && . /home/shellhttpd/shellhttpd.conf
        echo "PORT=$PORT"
        echo "MSG=$MSG"
        RESPONSE="HTTP/1.1 200 OK\r\n\r\n${MSG}\r\n"
        echo -en "$RESPONSE" | nc -w 5 -l -p "${PORT}" || true
        echo "= $(date) ============================="
done
Copy to clipboard

The first line in the while loop will check for a file /home/shellhttpd/shellhttpd.conf and if it exists it will load the variables specified in the file. Then, echo will print the values of PORT and MSG. RESPONSE will be redefined with the new MSG value.

Finally, -w 5 configures nc to stop listening every 5 seconds. This allows the script to reload new variables.