传统 war 部署无法访问 Eureka 服务器 Docker

Eureka server not accessible for traditional war deployment In Docker

Eureka 启动 gradle 项目 here。当我 运行 bootRun 时工作正常,Eureka 绑定到本地主机上的端口 8080,可从浏览器访问,每个人都很高兴。当作为 Docker 容器启动时,该应用程序似乎可以正常启动,没有任何异常,但我无法从端口 8080 上的浏览​​器访问 Eureka 控制台。我得到一个 404。

我知道 Docker 上有几个 Eureka 示例,但 none 使用 gradle 和传统部署。

我用来启动容器的命令:docker run -it -p 8080:8080 -e DOCKER_HOST="$(echo $DOCKER_HOST | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}')" xxx

Docker 引擎 1.9,Docker Mac 在 Mac 上运行 Mac。

日志片段:

Adding replica node: http://192.168.99.107:8080/eureka/
2015-12-26 03:35:42.959  INFO 7 --- [ost-startStop-1] n.a.javaee.discovery.DiscoveryServer     : Started DiscoveryServer in 8.167 seconds (JVM running for 12.804)

application.yml:

server:
  port: ${PORT:8080}

eureka:
  instance:
    hostname: ${DOCKER_HOST:localhost}
    preferIpAddress: true
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

Docker文件:

FROM abhijitsarkar/docker:tomcat8

ADD build/libs/*.war $CATALINA_HOME/webapps/discovery.war

CMD ["supervisord", "-c", "/etc/supervisord.conf"]

DiscoveryServer:

@SpringBootApplication
@EnableEurekaServer
public class DiscoveryServer extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(DiscoveryServer.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DiscoveryServer.class);
    }
}

看起来该应用是 运行。你的 Dockerfile 将 war 复制到 "discovery.war" 所以我希望它出现在 /discovery 上(但你并没有真正说出你尝试了什么,什么不起作用)。