配置docker-compose.yml使用域名替代localhost后,OpenHIM Console仍连接localhost的问题求助
配置docker-compose.yml使用域名替代localhost后,OpenHIM Console仍连接localhost的问题求助
你好!我来帮你排查这个问题。从你的描述和提供的docker-compose.openhim.yml配置来看,OpenHIM Console还在尝试连接localhost,核心原因是你用错了OpenHIM Console连接核心服务的环境变量名称,咱们一步步来解决:
问题根源
你当前配置的OPENHIM_CORE_MEDIATOR_HOSTNAME和OPENHIM_MEDIATOR_API_PORT是用来配置中介服务注册到OpenHIM Core的参数,并不是控制Console连接Core的地址。OpenHIM Console默认会连接localhost:8080,需要用专门的环境变量来覆盖这个默认值。
修正后的OpenHIM Console配置
你需要把Console的环境变量替换成正确的参数,同时考虑到容器在同一个Docker网络内的通信特性,直接用容器名访问更可靠:
openhim-console: container_name: openhim-console image: jembi/openhim-console:1.14 networks: - mapper-cluster-network environment: # 正确指定OpenHIM Core的容器地址(同网络内可直接用容器名) - OPENHIM_CORE_HOST=openhim-core - OPENHIM_CORE_PORT=8080 # 如果需要外部访问Console时使用你的域名,补充这个变量 - OPENHIM_CONSOLE_SERVER_URL=https://revamp.intelehealth.org:8080 ports: - "9000:80" depends_on: - openhim-core
关键说明
- 容器内通信优先用容器名:因为
openhim-core和openhim-console在同一个mapper-cluster-network网络里,直接用容器名openhim-core就能互相访问,不需要依赖外部域名的解析,更稳定。 - 环境变量的正确性:
OPENHIM_CORE_HOST和OPENHIM_CORE_PORT才是控制Console连接Core的核心变量,之前的变量完全不相关。 - 协议匹配:如果你的OpenHIM Core没有配置HTTPS,记得把
OPENHIM_CONSOLE_SERVER_URL里的https改成http,避免协议不匹配导致的连接失败。
后续验证步骤
修改配置后,执行以下操作确认:
- 重启容器:
docker-compose -f docker-compose.openhim.yml down && docker-compose -f docker-compose.openhim.yml up -d - 进入Console容器检查环境变量:
docker exec -it openhim-console printenv,确认OPENHIM_CORE_HOST和OPENHIM_CORE_PORT是你设置的值 - 检查Core服务是否正常:进入Core容器执行
curl http://localhost:8080,确认服务能正常响应
这样调整后,Console应该就能正确连接到OpenHIM Core,而不是再尝试访问localhost了。
备注:内容来源于stack exchange,提问作者Satyadeep Kumar
相关产品推荐
相关产品推荐

