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

Stub无法连接Temporal服务器问题求助

解决Docker Compose中Temporal服务主机名无法解析的问题

以下是针对UnknownHostException: temporal错误的排查和解决步骤:

1. 修复Spring Boot环境变量绑定问题

Spring Boot的宽松绑定规则要求环境变量使用大写字母+下划线格式匹配带点的配置属性。你当前使用的temporal.server.url格式可能无法被正确解析,导致应用实际连接的目标地址异常。

修改Docker Compose中客户端服务的环境变量:

environment:
  - TEMPORAL_ADDRESS=temporal:7233
  - TEMPORAL_CORS_ORIGINS=http://localhost:3000
  - TEMPORAL_SERVER_URL=temporal:7233  # 替换原有的temporal.server.url

确保Spring Boot代码中配置属性绑定正确:

@Value("${temporal.server.url}")
private String temporalServerUrl;

2. 验证容器网络连通性

确认两个服务处于同一Docker网络:

  • 检查temporal容器是否正常运行:
    docker ps | grep temporal
    
  • 进入客户端容器,尝试ping temporal服务:
    docker exec -it temporal-ps-wf-submit ping temporal
    

如果ping不通,检查网络是否存在:

docker network ls | grep temporal-network

若网络不存在,重新启动Docker Compose自动创建网络:

docker-compose down && docker-compose up -d

3. 解决depends_on的局限性

depends_on仅保证temporal容器启动,不等待Temporal服务完全就绪。添加健康检查确保客户端在服务可用后再启动:

修改temporal服务的Docker Compose配置,增加健康检查:

temporal:
  # ... 其他原有配置
  healthcheck:
    test: ["CMD", "tctl", "cluster", "health"]
    interval: 5s
    timeout: 5s
    retries: 5

更新客户端服务的depends_on,依赖temporal的健康状态:

temporal-ps-wf-submit:
  # ... 其他原有配置
  depends_on:
    temporal:
      condition: service_healthy

4. 临时用容器IP诊断

若上述步骤无效,可临时使用temporal容器IP验证连接:

  • 获取temporal容器IP:
    docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' temporal
    
  • 将客户端环境变量TEMPORAL_SERVER_URL替换为该IP(如172.18.0.3:7233),重启客户端容器查看是否连接成功。

内容的提问来源于stack exchange,提问作者Venkata Madhu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:46:27