3

I have a docker container running uhttpd and serving a static HTML page. How can I dynamically insert the hostname of the container into the static HTML page? I want to keep the container as lightweight as possible.

3

Why not just have a command that runs as part of the container's startup that generates the static HTML page with the hostname within it.

$ cat <<EOF > /path/to/var/www/hostname.html
<html>
<body>
<p>hostname is: $(hostname)</p>
</body>
</html>
EOF

This command can be placed in /etc/rc.d/rc.local assuming you're using a SysV style of startup scripts. If you're using systemd you can also do the same, but you'll need to enable the service:

$ sudo service rc-local start

This will mark it to run, to make it run per startup:

$ sudo systemctl enable rc-local

If you're using something else, such as Upstart, there are equivalent methods for doing the same things above.

References

  • Even though I ended up using Apache and PHP, if I had stuck with uhttpd and no PHP I would have done exactly what you suggested. Thanks – user74558 Nov 6 '14 at 4:04
2

If you are using PHP, you can use the following code:

echo system('hostname')

This will echo the output of the command hostname. Please note that the command system is disabled on many shared hosts for security reasons.

Alternatively, you can use:

echo gethostname();

-or-

echo php_uname('n')
1

For a static page, the easiest way would be to generate the served page from a template replacing a placeholder with whatever the hostname command gives you. Execute that code in the entrypoint of your image.

  • Welcome to the U&L Stack Exchange. The current phrasing of the answer is too vague. A fuller explanation on how to configure uHTTPd to achieve solution suggested would improve the answer considerably. See also the help center article on how to write good answers. – Thomas Nyman Sep 21 '14 at 7:53
0

The following is a webpage that would display the hostname. This shows the function 'inline' for web programming.

<html>
<body>
<?php echo gethostname(); ?>
</body>
</html>
New contributor
Dana is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy