【问题标题】:Docker port binding with Websphere Liberty and SpringBoot Rest ApplicationDocker 端口与 Websphere Liberty 和 SpringBoot Rest Application 绑定
【发布时间】:2019-09-13 15:45:23
【问题描述】:

我遇到了一个 springboot 应用程序的问题,它提供了一些休息端点并在 docker 上运行,基于 websphere-liberty:springBoot2 映像构建。 假设 spring 应用程序在端口 XXX 上运行,一切运行正常,只有当我将 docker 公共端口绑定到相同的值 XXX 时,我才能到达端点,但是如果我想使用一些不同的公共端口,比如 YYY,我到达http://localhost:YYY 上的 websphere 页面,但端点不起作用,我获得了一个 Liberty 页面,上面写着“未找到上下文根”。

换句话说,使用 application.properties 上的 server.port=XXX 构建 springboot,我得到了这个:

docker run -p XXX:XXX ....
=> http://localhost:XXX => spring "Whitelabel" 错误(如预期) => http://localhost:XXX/myendpoint => myendpoint 可达

docker run -p YYY:XXX ....
=> http://localhost:YYY => websphere“欢迎来到 Liberty”页面 => http://localhost:YYY/myendpoint => myendpoint 不可访问

我尝试在 docker 文件中添加“EXPOSE XXX”、“EXPOSE YYY:XXX”、“EXPOSE XXX:YYY”,但没有任何改变。

为什么???任何帮助表示赞赏...谢谢!

【问题讨论】:

    标签: rest spring-boot docker websphere-liberty


    【解决方案1】:

    你应该重写默认虚拟主机的定义,列出规范端口+监听端口+docker run时暴露的端口

    <virtualHost id="default_host">
        <hostAlias>*:80</hostAlias>
        <hostAlias>*:443</hostAlias>   
        <hostAlias>*:your-bound-port</hostAlias>
        <hostAlias>*:your-exposed-port</hostAlias>
    </virtualHost>
    

    【讨论】:

    • 谢谢@covener!我已经准备好这个问题,现在我在两周后回到它。经过一番挣扎,我意识到我将“use-default-host”设置为false。无论如何,你的帮助是必不可少的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2017-07-31
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    相关资源
    最近更新 更多