【问题标题】:'Permission denied' error for standalone-full.xml while creating custom image from official jboss/wildfly image从官方 jboss/wildfly 图像创建自定义图像时,standalone-full.xml 出现“权限被拒绝”错误
【发布时间】:2017-12-18 07:48:52
【问题描述】:

我正在努力构建从官方 jboss/wildfly 图像派生的自定义图像。

如果我只是添加 .war 文件并运行,它会完美运行,但是当我尝试添加自定义的standalone-full.xml 文件时会出现问题

这是我的 Dockerfile:

来自 jboss/wildfly:10.1.0.Final

复制standalone-full.xml /opt/jboss/wildfly/standalone/configuration/standalone-full.xml

复制 sample.war /opt/jboss/wildfly/standalone/deployments/

CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", “standalone-full.xml”、“-b”、“0.0.0.0”、“-bmanagement”、“0.0.0.0”]

这是我的源目录:

link to screenshot of ls -la command inside the source directory

按照建议,我已授予standalone-full.xml 文件755 权限。

但是,使用以下命令构建映像后:

docker build -t 示例应用程序。

并按如下方式运行图像:

docker run -it -p 8080:8080 -p 80:80 -p 443:443 示例应用程序

我收到以下错误:

13:18:06,274 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.undertow.listener.default: org.jboss.msc.service.StartException in service jboss.undertow.listener.default: WFLYUT0082: Could not start 'default' listener.
    at org.wildfly.extension.undertow.ListenerService.start(ListenerService.java:153)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.SocketException: Permission denied
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:433)
    at sun.nio.ch.Net.bind(Net.java:425)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.xnio.nio.NioXnioWorker.createTcpConnectionServer(NioXnioWorker.java:190)
    at org.xnio.XnioWorker.createStreamConnectionServer(XnioWorker.java:243)
    at org.wildfly.extension.undertow.HttpListenerService.startListening(HttpListenerService.java:126)
    at org.wildfly.extension.undertow.ListenerService.start(ListenerService.java:142)

我执行到正在运行的容器中查看独立文件的文件权限:

link to screenshot of ls -la command inside the container's /opt/jboss/wildfly/standalone/configuration/ directory

如果我在运行 CMD 指令之前将用户更改为 root,我可以让应用程序运行,但我认为这不是一个好习惯:

来自 jboss/wildfly:10.1.0.Final

复制standalone-full.xml /opt/jboss/wildfly/standalone/configuration/standalone-full.xml

复制 sample.war /opt/jboss/wildfly/standalone/deployments/

用户根

CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", “standalone-full.xml”、“-b”、“0.0.0.0”、“-bmanagement”、“0.0.0.0”]

如何正确设置独立文件的权限,以便我可以使用“jboss”用户运行应用程序?

我还尝试如下更改 Dockerfile 中的权限以匹配其他文件的权限:

来自 jboss/wildfly:10.1.0.Final

用户根

复制standalone-full.xml /opt/jboss/wildfly/standalone/configuration/standalone-full.xml

运行 chown jboss:root /opt/jboss/wildfly/standalone/configuration/standalone-full.xml

用户 jboss

复制 sample.war /opt/jboss/wildfly/standalone/deployments/

CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", “standalone-full.xml”、“-b”、“0.0.0.0”、“-bmanagement”、“0.0.0.0”]

但是,权限没有得到应用,我仍然得到同样的错误。 谁能指出我在哪里犯错的正确方向?

我正在使用 Docker 版本 17.06.0-ce 和 overlay2 存储驱动程序

【问题讨论】:

    标签: linux docker jboss wildfly


    【解决方案1】:

    您已将 Wildfly 实例配置为侦听 TCP/IP 端口号

    实际上是端口 80 和 443。

    通常只有 root 用户有权在任何基于 unix 的操作系统(包括 Linux)上执行此操作。

    【讨论】:

    • 非常感谢。错过了这样一个无害的细节感到愚蠢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2018-04-13
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    相关资源
    最近更新 更多