我有一个运行 uhttpd 并提供静态 HTML 页面的 docker 容器。如何将容器的主机名动态插入到静态 HTML 页面中?我想让容器尽可能轻。
答案1
为什么不直接使用一个命令作为容器启动的一部分来生成包含主机名的静态 HTML 页面。
$ cat <<EOF > /path/to/var/www/hostname.html
<html>
<body>
<p>hostname is: $(hostname)</p>
</body>
</html>
EOF
/etc/rc.d/rc.local
假设您使用的是 SysV 风格的启动脚本,则可以放置此命令。如果您使用 systemd,您也可以执行相同的操作,但您需要启用该服务:
$ sudo service rc-local start
这将把它标记为运行,使其每次启动时运行:
$ sudo systemctl enable rc-local
如果您使用其他工具(例如 Upstart),则可以使用等效方法来执行上述相同操作。
参考
答案2
如果您使用 PHP,则可以使用以下代码:
echo system('hostname')
这将是echo
命令的输出hostname
。请注意,出于安全原因,该命令system
在许多共享主机上被禁用。
或者,您可以使用:
echo gethostname();
-或者-
echo php_uname('n')
答案3
对于静态页面,最简单的方法是从模板生成服务页面,用hostname
命令提供的任何内容替换占位符。在图像的入口点执行该代码。
答案4
以下是显示主机名的网页。这显示了网络编程的“内联”功能。
<html>
<body>
<?php echo gethostname(); ?>
</body>
</html>