No tiene sentido usar el nombre de host durante la compilación porque la idea básica es compilar en un servidor central, luego enviar y extraer de cada instancia que necesite ejecutar la imagen como un contenedor.
Así que recomiendo --mount
el archivo de nombre de host en su lugar:
docker service create \
-p <port>:<port> \
--replicas 4
--mount type=bind,source=/etc/hostname,destination=/tmp/host-hostname,readonly=true \
<image>
Usa este PHP:
<h3>My hostname is <?php echo file_get_contents("/tmp/host-hostname"); ?></h3>