Non ha senso utilizzare il nome host durante la compilazione perché l'idea di base è quella di creare un server centrale, quindi eseguire il push, quindi eseguire il pull da ogni istanza che deve eseguire l'immagine come contenitore.
Quindi consiglio --mount
il file hostname invece:
docker service create \
-p <port>:<port> \
--replicas 4
--mount type=bind,source=/etc/hostname,destination=/tmp/host-hostname,readonly=true \
<image>
Usa questo PHP:
<h3>My hostname is <?php echo file_get_contents("/tmp/host-hostname"); ?></h3>