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
相关产品推荐
相关产品推荐

