我正在尝试使用ECS和Cloudformation部署Spring Netflix Eureka和相关的微服务应用程序。
Eureka无法注册相关的微服务,因为docker镜像无法链接到主机名上。
请建议什么是处理此问题的最佳解决方案。
发布于 2018-02-27 05:07:39
您应该使用EC2实例的主机ip,而不是docker容器主机的主机ip。在您的微服务(如果是spring boot应用程序)中,放入以下代码:
@Bean
@Profile("docker")
public EurekaInstanceConfigBean eurekaInstanceConfig() {
EurekaInstanceConfigBean config = new EurekaInstanceConfigBean();
AmazonInfo info = AmazonInfo.Builder.newBuilder().autoBuild("eureka");
config.setDataCenterInfo(info);
info.getMetadata().put(AmazonInfo.MetaDataKey.publicHostname.getName(), info.get(AmazonInfo.MetaDataKey.publicIpv4));
config.setHostname(info.get(AmazonInfo.MetaDataKey.publicHostname));
config.setIpAddress(info.get(AmazonInfo.MetaDataKey.publicIpv4));
config.setNonSecurePort(port);
return config;
}记住在spring boot配置中启用'docker‘配置文件。
https://stackoverflow.com/questions/48995689
复制相似问题