You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在docker-compose中为每个副本设置自定义唯一主机名

解决方案

Docker Compose 支持使用部署模板变量为多副本实例生成唯一主机名,你只需要在app服务配置中新增hostname字段,使用{{.Task.Slot}}内置变量即可,这个变量会自动替换为每个副本的序号(从1开始递增),保证每个实例主机名唯一。

修改后的完整配置如下:

version: '3.8' # 建议升级到3.8及以上版本保证模板变量兼容性
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    command: "/app/main"
    hostname: "app-{{.Task.Slot}}" # 新增该行,每个实例会自动生成app-1、app-2、app-3的主机名
    expose:
        - "8080"
    deploy:
        replicas: 3
  nginx:
    image: nginx:latest
    volumes:
        - ./nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
        - app
    ports:
        - "4000:4000"

验证方式

  • 部署完成后执行docker compose ps查看所有运行的容器
  • 任选一个app容器执行命令查看主机名:docker exec <对应app容器名> hostname,会返回对应序号的自定义主机名
  • 业务代码中可以直接读取系统HOSTNAME环境变量、或者调用hostname系统调用获取该唯一标识

注意事项

container_name字段不支持该模板变量,无需尝试用这个字段自定义副本名称,仅设置hostname即可满足实例识别需求。

内容的提问来源于stack exchange,提问作者Ashmeet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:18:04