jboss 无法从本地计算机访问Docker中的已发布端口

bhmjp9jg  于 2022-11-08  发布在  Docker
关注(0)|答案(2)|浏览(158)

我想停靠一个较旧的jboss服务器(7.0.0)。
第一个
在日志中,我可以看到jboss已成功启动,并且正在侦听端口:

INFO  [org.wildfly.extension.undertow] (MSC service thread 1-5) WFLYUT0006: Undertow HTTP listener default listening on 127.0.0.1:8080
...
INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990

当使用http://localhost:8080/检查浏览器时,我得到了一个ERR_EMPTY_RESPONSE。我错过了什么?

eni9jsuy

eni9jsuy1#

您需要检查应用程序未绑定到www.example.com的原因0.0.0.0,绑定到www.example.com时,应用程序仅接受容器内的连接127.0.0.1:
...正在降低HTTP侦听器默认值,正在侦听127.0.0.1:8080 ...正在侦听http://127.0.0.1:9990/management ...正在侦听http://127.0.0.1:9990

wh6knrhe

wh6knrhe2#

有两种形式的Dockerfile ENTRYPOINTCMD指令(还有RUN)。数组中的每一项实际上都是作为一个带引号的shell字来处理的。2指定一个不带JSON语法的命令可能会更容易,在这种情况下,Docker将启动一个shell来为您处理命令行。
由于问题中的表单只有一个JSON单词,Docker会尝试将整个单词解释为要运行的命令,包括作为文件名一部分的空格和连字符,并且不带任何选项。我希望容器根本不会启动,并给出“no such file or directory”错误。您需要手动将命令拆分为单独的单词,或者使用shell表单:


# Shell form

ENTRYPOINT /opt/jboss/bin/standalone.sh -Djboss.bind.address=0.0.0.0 -Djboss.bind.address.management=0.0.0.0

# JSON-array form

ENTRYPOINT ["/opt/jboss/bin/standalone.sh", "-Djboss.bind.address=0.0.0.0", "-Djboss.bind.address.management=0.0.0.0"]

如果您使用JSON数组形式,您可以在docker run选项中的影像名称之后指定其他选项,或指定为Composecommand:。如果您使用shell形式,则会完全忽略命令部分。
(对于是否将其设置为容器ENTRYPOINTCMD,有一个样式选择。我倾向于使用CMD,因为它更容易执行诸如在映像上启动调试shell之类的操作,并且存在一种常见的模式,即使用ENTRYPOINT作为 Package 器来进行一些首次设置,然后运行CMD。我在评论中建议改为CMD,但这对这个答案来说并不重要。)

相关问题