传统 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 上(但你并没有真正说出你尝试了什么,什么不起作用)。
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 上(但你并没有真正说出你尝试了什么,什么不起作用)。