Não faz sentido usar o nome do host durante a compilação porque a ideia básica é compilar em um servidor central, depois enviar e extrair de todas as instâncias que precisam executar a imagem como um contêiner.
Então eu recomendo
--mount
o arquivo hostname em vez disso:docker service create \
-p <port>:<port> \
--replicas 4
--mount type=bind,source=/etc/hostname,destination=/tmp/host-hostname,readonly=true \
<image>
Use este PHP:
<h3>My hostname is <?php echo file_get_contents("/tmp/host-hostname"); ?></h3>